控制台编码
修改character_set_client、character_set_results、character_set_connection为GBK,就不会出现乱码了。但其实只需要修改character_set_client和character_set_results。
控制台的编码只能是GBK,而不能修改为UTF8,这就出现一个问题。客户端发送的数据是GBK,而character_set_client为UTF8,这就说明客户端数据到了服务器端后一定会出现乱码。既然不能修改控制台的编码,那么只能修改character_set_client为GBK了。
服务器发送给客户端的数据编码为character_set_result,它如果是UTF8,那么控制台使用GBK解码也一定会出现乱码。因为无法修改控制台编码,所以只能把character_set_result修改为GBK。
- 修改character_set_client变量:set character_set_client=gbk;
- 修改character_set_results变量:set character_set_results=gbk;
总结一句话:
mysql控制台输入的数据默认编码是gbk,然而mysql服务器按照utf-8来解析保存数据.所以保存进去的数据必然出现乱码
读取数据库的数据,mysql按照utf-8编码传输到控制台,然而控制台默认按照gbk来解析,所以显示的数据必然出现乱码
一劳永逸的解决办法
配置文件路径:D:\Program Files\MySQL\MySQL Server 5.1\ my.ini
[client]
port=3306
[mysql]
default-character-set=gbk
3 MySQL工具
使用MySQL工具是不会出现乱码的,因为它们会每次连接时都修改character_set_client、character_set_results、character_set_connection的编码。这样对my.ini上的配置覆盖了,也就不会出现乱码了。