0
点赞
收藏
分享

微信扫一扫

关于MySQL编码问题解析


关于MySQL编码问题解析

1. 查看MySQL编码

show variables like 'char%';

因为当初安装时指定了字符集为UTF8,所以所有的编码都是UTF8。

  • character_set_client:你发送的数据必须与client指定的编码一致!服务器会使用该编码来解读客户端发送过来的数据。
  • character_set_connection:通过该编码与client一致!该编码不会导致乱码!当执行的是查询语句时,客户端发送过来的数据会先转换成connection指定的编码。但只要客户端发送过来的数据与client指定的编码一致,那么转换就不会出现问题。
  • character_set_database:数据库默认编码,在创建数据库时,如果没有指定编码,那么默认使用database编码。
  • character_set_server:MySQL服务器默认编码。
  • character_set_results:响应的编码,即查询结果返回给客户端的编码。这说明客户端必须使用result指定的编码来解码。

2. 控制台编码

修改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;

(4)设置编码只对当前连接有效,这说明每次登录MySQL提示符后都要去修改这两个编码,但可以通过修改配置文件来处理这一问题:修改配置文件“my.ini”中对应的值即可。

3. MySQL工具

使用MySQL工具是不会出现乱码的,因为它们会每次连接时都修改character_set_client、character_set_results、character_set_connection的编码。这样对my.ini上的配置覆盖了,也就不会出现乱码了。

4. MySQL在cmd中中文乱码问题

方法一:

修改“my.ini”文件:

然后重启MySQL服务器。

方法二:

在cmd命令行中,设置仅对当前cmd窗口有效的命令:

set names gbk;

关于MySQL编码问题解析_客户端


举报

相关推荐

0 条评论