[问题]数据库MySQL和Navicat的乱码问题
计算机中存储字符需要使用编码集,早期有ASCII集,但是随着技术的发展,ASCII集不能满足需求,出现了越来越多的字符,比如中文字符等。后来又发展出了Unicode、GB2312、utf8等字符集。字符集多了以后,问题就出现了,如果运行环境和对应使用情况的字符集不形同就会出现乱码或者“?”,如下图所示。
为了让字符能够正确显示,首先我们需要调整MySQL的文件,在MySQL的安装文件夹下找到“my.ini”文件,将字符集设定为GB2312,如下图所示。
然后将数据和对应表的字符集设定为utf8。可以使用show create语句查看数据库和表的字符集,如下图所示。
如果字符集不是需要的字符集可以使用alter语句进行修改,比如将字符集改为gb2312:
注意1:修改了“my.ini”的内容后需要重启MySQL
注意2;修改了字符集以后只对后面输入的字符起作用,对之前输入的字符没有影响。所以修改字符集以后最好重新建立一个数据库再录入数据,这样可以保证所有输入的数据格式统一,不会出现一部分内容是乱码一部分内容又能正常显示的情况。
有时会出现cmd里面输入的字符在cmd里面能够正常显示,而在Navicat里面显示乱码,而在Navicat里面输入的字符在Navicat里面可以正常显示,在cmd里面显示乱码。这个问题我在讲“ my.ini "里面的字符集改为gb2312以后解决了,但是目前没弄清楚原因。