问题源头
今天在用cmd来操作MYSQL,然后在插入含有中文的字段的记录,查询后会显示??。后面怀疑是不是建表的时候没有指定字符集,当我再次重新插入中文的记录,还是显示乱码,
然后我去SQLyog去插入一个含有中文的记录,然后再去重新查询,发现显示正常了。
所以造成这个问题就是cmd默认的字符集是gbk,而我们数据库是utf8mb4,sqlyog的字符集也是和数据库的字符集一样,所以在cmd插入含中文的记录时,就会显示乱码,在sqlyog输入就不会显示错误。
解决办法
我们可以通过set names gbk的命令更改字符集,这个命令相当于set了三个命令:
- character_set_client = charset_name;(客户端发送过来的语句的编码)
- character_set_connection( mysqld 收到客户端的语句后,要转换到的编码)
- character_set_results(server 执行语句后,返回给客户端的数据的编码)
然后再重新插入中文记录的时候,会发现显示正常了。