今天在做一个项目的时候遇到了一个很大的难题,就是在导入一个sql文件的时候,sqlyog乱码,导入navicat却显示正常。抱着不能得过且过的思想,我绝不管花再多的时间去搞定一个问题,都是值得的。所以,有什么错的地方请指教出来,纯属讨论。
有兴趣的可以自己操作下,我把文件也放上来
链接:https://pan.baidu.com/s/1mlmMDMFFcZ0Kocy0CUawyQ
提取码:6gnq
1.sql文件截图
(我用Notepad++打开的,可以查看字符编码,如果不是我所显示的UTF-8的格式,请按照以下修改 https://jingyan.baidu.com/article/ff42efa9e04733c19e2202f4.html)
2.sqlyog导入截图
3.navicat导入截图
当然了,明眼人一看就知道是字符编的问题,那么又该如何修改字符编码才对呢,这才是最重要的。
解决方法1:
首先我想到的是文件系统的字符编码,即该ao.sql的字符编码集和sqlyog的文件系统字符编码及不一样,ao.sql的字符编码集不用说,在第一个图中就可以看出是UTF-8的,这是国际通用的字符编码集。
那么sqlyog和navicat呢,,如下
sqlyog连接信息
navicat连接信息
这是不是sqlyog指定字符编码没起作用,但是navicat起作用了,然后我看到了这一个文章https://blog.csdn.net/weixin_42978998/article/details/85274893
打开CMD,输入指定chcp命令,如下
返回的是936,936是GBK,国内专有中文字符编码集
这说明我电脑的文件系统指定默认的字符编码集是GBK,我需要修改文件系统未UTF-8即可,所以根据提示金鱼
语言设置-语言管理设置,如下,将红圈内勾上,重启电脑之后,一切显示正常了。
解决方式2:
在经过第一个解决方案后,我设想,是不是不用将电脑系统改成UTF-8,只需要改变sqlyog的连接属性,即可,如下
选择GBK或者gb2312,sqlyog也显示正常了。
至于为什么会这样,我就不清楚了,可能是我安装的mysql是解压版的,也有可能是sqlyog本身的问题,至于是哪种,各位大佬指教下。
附上字符编码集:https://blog.csdn.net/ZYY88886666/article/details/75285780