原因
- 前提:MySQL在安装时选择编码为utf8,数据库、表创建时的编码也是utf8,但在cmd下无法输入中文。
- 根本原因:客户端、服务器、数据库/表的编码不一致。
- 即:cmd写入显示的字符编码是gbk,与MySQL 的配置不一致。
关于修改cmd字符编码为utf8
由于中文操作系统的cmd默认编码是gbk,网络上很多建议把cmd编码设置为utf8,即用chcp命令改为65001(utf8字符编码) ,可这样修改之后根本无法输入中文,在执行inset into…命令时mysql直接退出。
思路
所以既然修改cmd的编码行不通,我们:
- 要么在cmd里告诉mysql我们的cmd客户端输入的编码是gbk,然后能接收的编码也是gbk即可。
- 要么修改MySQL配置文件,把client的编码配置修改为何cmd一致的gbk
解决方案
临时解决方案
- **set names gbk;**相当于是告诉mysql服务器软件,我们在当前命令行下输入的内容是GBK编码。当命令窗口关闭后,它再输入中文就会出现问题
--MySQL 5.1参考手册
- set character_set_client=gbk;set character_set_results=gbk;
其实,只要保证cmd客户端和MySQL两者编码一致即可。但现实是cmd默认的是gbk,而mySQL一般是utf8。所以我们需要在cmd中告诉MySQL:
——cmd这边发送给MySQL的是gbk的。
——cdm这边接受的数据要求是gbk的。
永久解决办法
-
修改my.ini配置
暂停mysql服务
MySQL配置文件:C:\Program Files\MySQL\MySQL Server 5.5\my.ini,修改client配置的编码为gbk。
保存文件退出
重启mysql服务