[error handle][mysql]mysql汉字乱码

本文介绍了MySQL默认使用latin1编码导致的中文乱码问题及解决方案。通过调整客户端和服务器的字符集配置,并修改my.ini文件来永久解决乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

REASON1

mysql默认编码都是latin1,察看方式:
mysql> SHOW VARIABLES LIKE ”character_set_%”;
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | binary |
| character_sets_dir | D:\Program Files\mysql-5.6.24-winx64\share\charsets\ |
+————————–+—————————-+
7 rows in set (0.00 sec)

ERROR1

此时通过Navicat插入汉字,一保存就会显示成乱码。

FIND1

上网查了下资料,主要是:
http://blog.youkuaiyun.com/shupan001/article/details/6248080
注意,如果某个表有些字段在latin下编辑过了,更改表和数据库的编码后,进行汉字编辑还是乱码。
那是因为这个表的这些字段的编码还是latin1,输入命令进行察看就知道了。

HANDLE1

运行:SET NAMES “UTF8”; (好像是,记不清了)
它的作用相当于:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
通过Navicat插入汉字显示正常。

REASON2

此时
+————————–+—————————-+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | binary |
| character_sets_dir | D:\Program Files\mysql-5.6.24-winx64\share\charsets\ |
+————————–+—————————-+

ERROR2

通过java代码向表中插入汉字,还是俩问号。url结尾加上?useUnicode=true&characterset=utf-8也是。

FIND2

既然只有character_set_server这个漏网之鱼,那估计就是它喽,想要更改它还挺麻烦。
网上的三个方法:
1、SET character_set_server = utf8;
对其他项貌似有用,但对它没用,改完后重启mysql立刻恢复原状。
2、有教程说可以运行设置向导,位置在X:\%path%\MySQL\MySQL Server 5.0\bin\MySQLInstanceConfig.exe
我这个版本的mysql相应目录就没有这个文件。好像高版本的这个文件被取消了。
3、更改mysql根目录下的my.ini,添加一行character_set_server = utf8,重启mysql
亲测可用

HANDLE2

更改后,插入汉字,一切正常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值