[问题]数据库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以后解决了,但是目前没弄清楚原因。

posted @ 2016-04-30 14:09  rogear  阅读(420)  评论(0编辑  收藏  举报