~ SQL 语句 — DOS 操作数据乱码问题

我们在 dos 命令行操作中文时,会报错:

insert into category(cid,cname) values(‘c010’,’中文’);		
ERROR 1366 (HY000): Incorrect string value: '\xB7\xFE\xD7\xB0' for column 'cname' at row 1

解决方案一:在cmd命令窗口中输入命令,此操作当前窗口有效,为临时方案。

set names gbk;

解决方案二:安装目录下修改my.ini文件,重启服务所有地方生效。[ 不建议 ]


错误原因:mysql 的客户端设置编码是 utf8,而系统的 cmd 窗口编码是 gbk。


[1] 查看 MySQL 内部设置的编码

show variables like 'character%';   // 查看所有mysql的编码


[2] 修改 client、connection、results 的编码一致(GBK编码)

client connetion result 和客户端保持一致,都为 GBK

#方式1:单独设置
set character_set_client=gbk; 
set character_set_connection=gbk;
set character_set_results=gbk; 
 
#方式2:快捷设置
set names gbk;