【问题解决】MYSQL在cmd插入含有中文的记录后显示??

192 阅读1分钟

问题源头


今天在用cmd来操作MYSQL,然后在插入含有中文的字段的记录,查询后会显示??。后面怀疑是不是建表的时候没有指定字符集,当我再次重新插入中文的记录,还是显示乱码,

image.png

然后我去SQLyog去插入一个含有中文的记录,然后再去重新查询,发现显示正常了。

image.png

image.png

所以造成这个问题就是cmd默认的字符集是gbk,而我们数据库是utf8mb4,sqlyog的字符集也是和数据库的字符集一样,所以在cmd插入含中文的记录时,就会显示乱码,在sqlyog输入就不会显示错误。

解决办法


我们可以通过set names gbk的命令更改字符集,这个命令相当于set了三个命令:

  1. character_set_client = charset_name;(客户端发送过来的语句的编码)
  2. character_set_connection( mysqld 收到客户端的语句后,要转换到的编码)
  3. character_set_results(server 执行语句后,返回给客户端的数据的编码)

image.png

然后再重新插入中文记录的时候,会发现显示正常了。