网上一次MySQL中文乱码问题的处理过程

1 企鹅上朋友问我MySQL查询出来的数据在工具里面出来的是乱码,如图所示:网上一次MySQL中文乱码问题的处理过程


2 让他去检查mysql服务器的字符集设置,可以看到都是utf8正常的,如图所示:

网上一次MySQL中文乱码问题的处理过程


3 我猜测一定是数据录入的时候出的问题,朋友说是通过source方式录入的,然后我去linux服务器上面检查导入的数据文件:

more/opt/soft/20130821ajtdrz_1.sql: 如图所示:

网上一次MySQL中文乱码问题的处理过程


4 然后我让他把文件下载从服务器下载下来在本地看看,他下载下来之后,显示如图正常:

网上一次MySQL中文乱码问题的处理过程


5,奇怪了,而且而且网站前台显示也是好的,不过这个情况也不是不能解释,原来做短信系统有过类似的经历,就是录入的和网页前台显示的编码如果是一致的话,不管你中间存储的是什么类型,那么即使通过别的工具看到的是乱码,但是网页前台一定显示是正常的。我让他看下他的editplus下面sql文件编码格式是否是utf8格式的,如图所示:

网上一次MySQL中文乱码问题的处理过程


看到这里他保存的编码格式也是utf-8的啊,怎么会传入到linux下变成乱码了呢?


6, 我去看linux下面的语言格式

[[email protected] soft]# echo $LANG
en_US.UTF-8

看到这里我推断出2个原因

1 不是zh_US.UTF-8模式的。难道是中文安装失败导致传到linux上面的sql文件是乱码的形式的吗?

2 要不就是传过来的sql文件保存格式有问题。(但是朋友说了保存格式正确,这点也许概率不大)


7, 我上网google了很多资料,发现如果是en_US.UTF-8语言模式下,是可以正常显示汉字的只要,传上来的sql文件的编码模式是linux模式的utf8编码就行了,到此我可以判定很大概率是朋友上传得sql文件有问题的。我让他方便的话把文件发给我,我在这边检测下他的sql文件。结果这兄弟,没有回复了,估计是有要事走开了。


8,1个半小时后,这兄弟回来了,跟我说:“不好意思啊。这么晚回你 。刚开回去了,问题解决了,是我文件编码问题。我另存为下utf8 完了再传上去就好使 了。”,就发图给我如下:网上一次MySQL中文乱码问题的处理过程



总结如下:中文显示乱码,大概有这么几个方面

1 服务器端字符串设置,一般统一为utf-8

2 client端字符串设置,看是否为utf8

3 上传的数据的编码模式,一定要选与服务器端的编码模式一致。


总结的不一定全面,欢迎大家提出宝贵的意见。