mysql中文乱码

MySQL 中是根据下面几个变量确定服务器端和客户端用的什么字符集:

  character_set_client     客户端字符集

  character_set_connection   客户端与服务器端连接采用的字符集

  character_set_results     SELECT查询返回数据的字符集

  character_set_database    数据库采用的字符集

MySQL的字符集处理是这样的:

  1、发送请求。

  1)客户端发送请求到服务器端。

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

  3)然後服务器会检测存储区域(table,column)的字符集,然后把数据从连接字符集(character_set_connection)转为存储区域(table,column)的字符集,然後再存储或者查询。

2、返回请求。

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

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

查看系统的字符集用下面的命令:

1 mysql> SHOW VARIABLES LIKE 'character_set_%';

2 +--------------------------+-----------------------------------------+
3 | Variable_name            | Value                                   |
4 +--------------------------+-----------------------------------------+
5 | character_set_client     | utf8                                    |
6 | character_set_connection | utf8                                    |
7 | character_set_database   | utf8                                    |
8 | character_set_filesystem | binary                                  |
9 | character_set_results    | utf8                                    |
10 | character_set_server     | utf8                                    |
11 | character_set_system     | utf8                                    |
12 | character_sets_dir       | E:\usr\MySQL Server 5.0\share\charsets\ |
13 +--------------------------+-----------------------------------------+
14 8 rows in set (0.00 sec)
15

 可以看到,我的这几个变量都是一致的。但如果不一致呢?网上许多教程告诉你“你set names下就解决了”。

  那么set names是什么呢? set names实际上就是同时设置了 character_set_client ,character_set_connection和 character_set_results 这三个系统变量。

  例如在mysql命令行上输入 set names 'gbk' 命令等同于:


SET character_set_client = gbk;
SET character_set_connection = gbk;
SET character_set_results = gbk;

  四、总结

  为便于大家记忆,总结为以下四点:

  1、要保证发送的数据与数据库的字符集一致,即 character_set_client,character_set_connection 与character_set_database 一致。

  2、要保证数据库中存储的数据与数据库编码一致,即数据的编码与character_set_database一致。

  3、要保证 SELECT 的返回与程序的编码一致,即 character_set_results 与程序(PHP、Java等)编码一致。

  4、要保证程序编码与浏览器编码一致,即程序编码与 一致。

可以使用SHOW CHARACTER SET语句列出可用的字符集:
show character set;


引用:http://wenku.baidu.com/link?url=mKC__puO4ie4Bc-HYwfm0cj9ieFePZ_aSV5cslJYVkYWxoxsy7tTg_yUQsKn8bWY38FOZhCGO6ul9Aqay9wPwgfo3aZlxRpN4bvv5MWLtq3

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值