MySQL学习笔记一:编码

昨晚重装了一下MySQL,今天在查询数据时,发现中文出现了乱码;插入数据时,报错“Incorrect string value: '\xCD\xF5\xCE\xE5' for column 'sname' at row 1”,如下图所示:

MySQL学习笔记一:编码

翻看之前学习MySQL时的笔记,瞬间将问题解决, 解决方法总结如下:

1.查看MySQL数据库编码

MySQL学习笔记一:编码

2.编码解释

  • character_set_client:MySQL使用该编码来解读客户端发送过来的数据,例如该编码为utf8,那么如果客户端发送过来数据不是utf8,那么就会出现乱码
  • character_set_results:MySQL会把数据转换成该编码后,再发送给客户端,例如该编码为utf8,那么如果客户端不使用utf8来解读,那么就会出现乱码
  • character_set_server:MySQL服务器默认编码;
  • 其它编码只要支持中文即可,也就是说不能使用latin1

3.控制台乱码问题

3.1.插入或修改数据时出现乱码

控制台cmd的编码只能是gbk,不能修改为utf8,这就出现一个问题:客户端发送的数据是gbk,而character_set_client为utf8(即MySQL会使用uft8编码解读客户端发送过来的数据),这就说明客户端数据到达服务器端后一定会出现乱码!

既然不能修改控制台的编码,那么只能修改character_set_client为gbk了。

3.2.查询出的数据为乱码

MySQL服务器发送给客户端的数据编码为character_set_result,它如果是utf8,那么控制台cmd使用gbk解码也一定会出现乱码!

因为无法修改控制台编码,所以只能把character_set_result修改为gbk。

3.3.设置变量的语句

  • set character_set_client=gbk;
  • set character_set_results=gbk;

注意:设置编码只对当前连接有效,这说明每次登录MySQL后都要去修改这两个编码,比较麻烦!我们可以通过修改配置文件来处理这一问题,达到一劳永逸的效果!

配置文件路径:F:\Program Files (x86)\MySQL\MySQL Server 5.5\my.ini

设置default-character-set=gbk即可!

MySQL学习笔记一:编码