「经验」解决/弄懂Windows环境下CMD中MySQL中文乱码

引子

由于Windows操作系统的CMD控制台默认是GBK(我国于1995年12月1日制订)编码的,所以在操作MySQL数据库时显示中文可能会出现乱码,并且也不能输入中文。
本经验立足实践,告诉大家解决这一问题的方法论。

误区

不少人认为既然CMD控制台是GBK编码的,那修改注册表改成UTF-8编码的不就完事了吗!好吧...虽然这个想法有一定的道理,但事实上依旧无法正常显示/输入中文。这个应该是微软的锅啦!


CMD.PNG

Why

简单来讲,MySQL在安装配置如果选择了UTF-8编码,那么不仅仅意味着整个数据库用的是UTF-8编码,并且客户端在登录时也默认是使用UTF-8编码的!但CMD又是GBK编码的,所以问题就出现了。
下面是其它原因(本教程主要针对第三种原因):

1.server本身设定问题,例如还停留在latin1
2.table的语系设定问题(包含character与collation)
3.客户端程式(CMD)的连线语系设定问题

How

第一步--先弄清楚当前连接的字符编码

登陆MySQL,输入status查看当前连接的字符编码。

Status.PNG

从图中可以看出,本次连接客户端使用的编码是UTF8,但是CMD控制台是GBK编码的。

第二步--着手修改

单次连接

set character_set_client=gbk
set character_set_results=gbk

输入以上命令,前者告诉MySQL客户端这边(CMD)的编码、后者告诉希望返回的编码。


设置完成.PNG

多次连接

修改my.ini文件(在MySQL安装目录下)。
将以下配置信息

default-character-set=utf8

改为

default-character-set=gbk

这时连接MySQL都会是GBK编码的了。

思考

采用哪种方法需要根据实际情况选择。若登陆数据库都是CMD的话那么就用第二种方法,如果还有其它UTF8编码的客户端登陆(像Linux),那么用第一种方法吧!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • show charcater set; show variables like '%character%'; 1....
    SkTj阅读 1,535评论 0 2
  • 顾颖17021223250 转载自https://blog.csdn.net/qingqing7/article/...
    大猫_23fe阅读 1,120评论 0 2
  • 前段时间公司内部博客上凯哥分享了一篇关于mysql字符集编码的文章,之前我对mysql字符集一块基本没有深究过,看...
    __七把刀__阅读 6,483评论 14 18
  • 最近想读这几本书 商务印书馆出的《论美国的民主》,《论法的精神》,《政府论》,《利维坦》。到书店找了找,还都有,堆...
    小岛毅阅读 297评论 0 0
  • 二胎时代,有一个问题尖锐但很现实:你,真的一碗水端平了吗? 很惭愧,我没有做到… 不是我不爱老大了,而是我觉得二宝...
    灏灏妈咪阅读 253评论 0 0