解决MYSQL编码问题

各位大虾,这是本人每一次写blog.在这其中看到很多人都会为了mysql的乱码问题而发愁.我也是最近才了解到的这些问题,也有一些个人理解,如果说的不对,大家一定要指出来.共同进步.言归正转.

mysql> show variables like '%char%' ;
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | utf8                                                    |
| character_set_connection | utf8                                                    |
| character_set_database   | utf8                                                    |
| character_set_results    | utf8                                                    |
| character_set_server     | utf8                                                    |
| character_set_system     | utf8                                                    |
| character_sets_dir       | C:/Program Files/MySQL/MySQL Server 5.0/share/charsets/ |
+--------------------------+---------------------------------------------------------+

大家看到这些字符了,他们的编码都是utf8的 先给大家说一下 character_set_connection | utf8      这个是服务端的编码,

character_set_client     | utf8     这个是我们终端编码  character_set_results    | utf8    这个是结果集的编码 .

+----------+----------+----+
| password | username | id |
+----------+----------+----+
|          | 王琪     |  1 |
| wan      | 王琪     |  2 |
| wan      | 大家好   |  4 |
+----------+----------+----+
3 rows in set

这个是在utf_8下面显示的情况

那么我们现在给他的编码改成GBK,看会是什么样子的

mysql> show variables like '%char%' ;
+--------------------------+---------------------------------------------------------+
| Variable_name            | Value                                                   |
+--------------------------+---------------------------------------------------------+
| character_set_client     | gbk                                                     |
| character_set_connection | gbk                                                     |
| character_set_database   | utf8                                                    |
| character_set_results    | gbk                                                     |
| character_set_server     | utf8                                                    |
| character_set_system     | utf8                                                    |
| character_sets_dir       | C:/Program Files/MySQL/MySQL Server 5.0/share/charsets/ |
+--------------------------+---------------------------------------------------------+
7 rows in set
看我们已经把三个主要的编码改成gbk了. 

 

+----------+----------+----+
| password | username | id |
+----------+----------+----+
|          |          |  1 |
| wan      |          |  2 |
| wan      |          |  4 |
+----------+----------+----+

出现了乱码的情况.这是什么原因呢? 是因为在数据库里面存的数据是UTF8的三位编码.而gbk 是二位的编码.所以会出现这样的情况.

这样我现在给大家在重新说一下这三个编码:我们在终端写SQL语句,他会通过client的编码方式给转码,到服务端又通过connection在给过来.如果有结果集会把结果集用你规定的编码封装好返回来.这就是整个sql执行的过程.好了,就说这么多.可能说的不太好.也不是很具体,请大家见谅.希望对大家有帮助

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值