mysql字符集情况如下图
我直接select,结果集有中文不会乱码,若set names utf8再select,结果集有中文就会乱码,不理解原因...
3 回答
梵蒂冈之花
TA贡献1900条经验 获得超5个赞
数据库字符集有三个地方需要注意:
1、录入数据时的字符集
2、表数据存储字符集
3、客户端查询时本地字符集
只有你的字符集对应上了才不会乱码,你的问题就是1使用了latin1字符集,2是utf8,这时候就是3,你要使用latin1才能看到不乱码,因为你使用了latin1的编码给到mysql,mysql按照utf8的编码存入,对mysql来说你发过来的就是乱码,我存的也是乱码,想要读出来正常的数据就要按照你最初的字符集编码去读才行
补充一下:
set names utf8;这个操作修改的就是第三种情况:客户端的字符集
动漫人物
TA贡献1815条经验 获得超10个赞
** 问题所在:
数据入库的时候存的是latin1编码,你查询的时候用UTF8编码,而latin1无法转化为utf8故显示乱码。
** 分析原因:
set names utf8
等价于
SET character_set_client = utf8; //表示SQL离开客户端时的编码
SET character_set_results = utf8; //服务器返回的结果集编码
SET character_set_connection = utf8; //服务器接收后转换的字符编码
这样就规定了客户端和服务器之间通信编码的统一。
** 结论:
你在初始数据入库的时候都是Latin1编码的数据,后面执行set names utf8
后,查询的数据从latin1转为utf8就会乱码
- 3 回答
- 0 关注
- 1664 浏览
添加回答
举报
0/150
提交
取消