mysql中文乱码终结解决

今天在对数据库插入中文数据时中文乱码,一开始只是以为数据库的编码没 设成utf-8,然后改为utf-8之后还是不行!!!

然后度娘了很久之后,看到一篇博客写的很清晰,终于搞起了mysql中文乱码的原因。

首先通过设置把编码都设成utf-8: 如下图:


这样做看似mysql中文乱码终结解决_第1张图片可以了,其实查出的数据还是乱码!!!


继而了解mysql数据存储于查询过程的字符编码转换机制:

1、存储数据过程:

  1)客户端发送数据到服务器端。

  2)服务器端会把请求的数据从客户端字符集(character_set_client)转成服务器连接字符集(character_set_connection)。

  3)然后服务器会检测存储区域(table,column)character_set_server的字符集,

        然后把数据从连接字符集(character_set_connection)转为存储区域(table,column)character_set_server的字符集,然後再存储或者查询。

2、查询数据过程:

  1)服务器将存储区域(table,column)character_set_server的字符集转换成服务器连接字符集(character_set_connection)。

  2)将服务器连接字符集(character_set_connection)转换成结果字符集(character_set_results),再发送到客户端。


原因:windows下的dos不支持utf-8!!!

由此:通过 set names gbk;

最终的字符集:

mysql中文乱码终结解决_第2张图片


dos端编码为gbk,因此能正确显示了中文。

你可能感兴趣的:(mysql)