千家信息网

如何解决mysql乱码问题

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,小编给大家分享一下如何解决mysql乱码问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!mysql的字符集支持(character set support)有两个方面:字符集(ch
千家信息网最后更新 2025年11月07日如何解决mysql乱码问题

小编给大家分享一下如何解决mysql乱码问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

mysql的字符集支持(character set support)有两个方面:字符集(character set)和排序方式(collation)。对于字符集的支持细化到四个层次:
服务器(server),(database),数据表(table)和连接(connection)。

1.默认字符集:mysql对于字符集的指定可以细化到一个数据库,一张表,一列.传统的程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置. (1)编译mysql 时,指定了一个默认的字符集,这个字符集是 latin1;
(2)安装mysql 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;
(3)启动mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的配置,此时 character_set_server 被设定为这个默认的字符集;
(4)当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为character_set_server;
(5)当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集;
(6)在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集;
(7)当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;如果什么地方都不修改,那么所有的数据库的所有表的所有栏位的都用 latin1 存储,不过我们如果安装 mysql,一般都会选择多语言支持,也就是说,安装程序会自动在配置文件中把 default_character_set 设置为 utf-8,这保证了缺省情况下,所有的数据库的所有表的所有栏位的都用 utf-8 存储。


2.查看默认字符集(默认情况下,mysql的字符集是latin1(iso_8859_1)通常,查看系统的字符集和排序方式的设定可以通过下面的两条命令:
mysql> show variables like 'character%';
+--------------------------+---------------------------------+
| variable_name | value |
+--------------------------+---------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | d:"mysql-5.0.37"share"charsets" |
+--------------------------+---------------------------------+

mysql> show variables like 'collation_%';
+----------------------+-----------------+
| variable_name | value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+

3.修改默认字符集
(1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值,
如 default-character-set = utf8
character_set_server = utf8
修改完后,重启mysql的服务,service mysql restart
使用 mysql> show variables like 'character%';查看,发现数据库编码均已改成utf8
+--------------------------+---------------------------------+
| variable_name | value |
+--------------------------+---------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | d:"mysql-5.0.37"share"charsets" |
+--------------------------+---------------------------------+

(2) 还有一种修改字符集的方法,就是使用mysql的命令
set character_set_client = utf8 ;
set character_set_connection = utf8 ;
set character_set_database = utf8 ;
set character_set_results = utf8 ;
set character_set_server = utf8 ;

mysql> set collation_connection = utf8 ;
mysql> set collation_database = utf8 ;
mysql> set collation_server = utf8 ;

一般就算设置了表的默认字符集为utf8并且通过utf-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句:
set names 'utf8';

它相当于下面的三句指令:
set character_set_client = utf8;
set character_set_results = utf8;
set character_set_connection = utf8;

不知道什么原因,我在自己机器上把上述三个字符集都设置成utf8后,查询中文结果还是乱码,只有把character_set_results设置成gbk之后才能从命令行正常显示中文.
set character_set_results=gbk;

看完了这篇文章,相信你对"如何解决mysql乱码问题"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

字符 字符集 数据 数据库 配置 乱码 命令 文件 问题 就是 方法 utf-8 支持 查询 中指 也就是 情况 数据表 方式 程序 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 存储未用空间分给数据库 达州市达川区长征数据库 关于强化网络安全工作的通知 服务器散热距离要求 张家口聊天软件开发诚信公司 铁锈怎么连接服务器 上海云谷网络技术有限公司 网络安全专家全集 北京易特优网络技术有限公司 第一观点网络技术公司销售待遇 汕头商城软件开发咨询 网络安全ctf培训心得体会 软件开发产品助理 安卓轻量级数据库框架 汽车网络技术未来的发展趋势 pg数据库登录失败锁定 数据库技术与原理 打开win安全中心服务器 叮咚买菜软件开发怎么样 宝安区无源网络技术开发分类 头条全年数据库报告怎么查 杭州汉景网络安全 计算机网络技术课程名词解释 网络安全教育字词 外国大学生网络安全专业 arma3搭建服务器 南京华天网络技术有限公司 大理服务器上门回收中心 瑞海力通网络技术发展有限公司 宦海沉浮下载软件开发
0