「经验」解决/弄懂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),那么用第一种方法吧!

你可能感兴趣的:(「经验」解决/弄懂Windows环境下CMD中MySQL中文乱码)