MySQL命令窗口中文编码乱码问题:
使用查询命令:
show variables like 'char%';
编码解释:
character_set_client:MySQL使用该编码来解读客户端发送过来的数据,例如编码为UTF8,那么如果客户端发送过来的数据不是UTF8,那么就会出现乱码
character_set_results:mysql会把数据转换成该编码后,在发送给客户端,例如该编码为UTF8,那么如果客户端不用UTF8来解读,那么就会出现乱码
其他编码只要支持中文即可,也就是说不能使用UTF8
注意:命令行窗口只能使用GBK编码,如果传递UTF8编码必然会乱码
控制台乱码问题
插入或修改是出现乱码:
-| 这个时候因为cmd下默认使用GBK而character_set_client不是GBK的原因。我们只需要让这两个编码相同即可。
-| 因为修改cmd的编码不方便,所以我们去设置character_set_client为GBK即可。
查询出的数据为乱码:
-| 这是因为character_set_results不是GBK,而cmd默认使用GBK的原因,我们只需要让这两个编码相同即可。
-| 因为修改cmd的编码不方便,所以我们去设置character_set_results为GBK即可。
设置变量的语句:
-| set character_set_client = gbk;
-| set character_set_results = gbk;
注意,设置变量只对当前连接有效,当退出窗口后,再次登录mysql,还需要再次设置变量。
为了一劳永逸,可以在my.ini中设置:
设置character-set-server=utf8即可。
| character_set_client | utf8 -->mysql把我们客户端传递的数据当成是utf8!一是给他传递utf8,二是如果我们传递的是gbk,那么需要修改这个变量为gbk
| character_set_connection | utf8
| character_set_database | utf8
| character_set_filesystem | binary
| character_set_results | utf8 -->mysql发送给客户端的数据都是utf8!一是客户端用utf8编码,二是如果客户端使用gbk来编码,那么需要修改这个变量为gbk
| character_set_server | utf8
| character_set_system | utf8
修改:
查询:
修改my.ini
可以一劳永逸的解决问题,修改完成以后,重启MySQL,生效。