insert into t1(v1) values('cn中国');
select * from t1;

1、输入gbk,交互latin1,数据库latin1
insert,客户端把gbk的输入当成latin1来解释,传给服务,服务不需要转码,把gbk当成latin1存入数据库,显示乱码。
select,服务不转码,返回给客户端,客户端latin1当成gbk解释,显示正确。
2、输入gbk,交互latin1,数据库gbk
insert 报错:ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xB9\xFA' for column 'v1' at row 1
原因是:客户端把gbk的输入当成latin1来解释,传给服务,服务转码,把latin1转化为gbk,出错。
3、输入gbk,交互latin1,数据库utf8
和1一样,这是因为utf8英文字符一个字节,多字节字符三个字节。
4、输入gbk,交互gbk,数据库latin1
insert 报错:ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xB9\xFA' for column 'v1' at row 1
原因是:客户端把gbk的输入当成gbk来解释,传给服务,服务把gbk转化为latin1,转化失败。
5、输入gbk,交互gbk,数据库gbk
insert,客户端把gbk的输入当成gbk来解释,传给服务,服务不需要转码,直接存入数据库,存入数据库正常。
select,服务不转码,返回给客户端,客户端gbk当成gbk解释,显示正确。
6、输入gbk,交互gbk,数据库utf8
insert,客户端把gbk的输入当成gbk来解释,传给服务,服务把gbk转成utf8,存入数据库,存入数据库正常。
select,服务把utf8转成gbk,返回给客户端,客户端gbk当成gbk解释,显示正确。
7、输入gbk,交互utf8,数据库latin1
insert 报错:ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xB9\xFA' for column 'v1' at row 1
原因是:客户端把gbk的输入当成utf8来解释,解释错误。
8、输入gbk,交互utf8,数据库gbk
同7
9、输入gbk,交互utf8,数据库utf8
同7

考虑下面的情况,输入gbk,交互gbk,数据库gbk,插入一条记录,查询回来正常。现在把交互改成utf8,会出现什么问题?
mysql> select * from t1;
+--------+
| v1 |
+--------+
| cn中国 |
+--------+
1 row in set (0.00 sec)

mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from t1;
+----------+
| v1 |
+----------+
| cn涓浗 |
+----------+
1 row in set (0.00 sec)

这是因为把utf8的中国,当成gbk解释,就是显示涓浗,也就是说,他们对应的Id是一样的。反过来,也是一样,把gbk的涓浗当成utf8解释,就是中国,如下:
mysql> insert into t1(v1) values('cn涓浗');
Query OK, 1 row affected (0.08 sec)

mysql> select * from t1;
+----------+
| v1 |
+----------+
| cn涓浗 |
| cn涓浗 |
+----------+
2 rows in set (0.00 sec)

mysql> set names gbk;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from t1;
+--------+
| v1 |
+--------+
| cn中国 |
| cn中国 |
+--------+
2 rows in set (0.00 sec)

最新文章

  1. 如何计算合适的InnoDB的(innodb_log_file_size)日志文件大小
  2. 续Gulp使用入门三步压缩图片
  3. 使用IXmlSerializable的问题
  4. C#语法小用法
  5. java 经典题
  6. 【POJ】3134 Power Calculus
  7. bootstrap的滚动监听
  8. Kakfa揭秘 Day4 Kafka中分区深度解析
  9. android面试题及答案
  10. HDU 4620 Fruit Ninja Extreme(2013多校第二场 剪枝搜索)
  11. 使用ToggleButton和StackPanel+Border实现圆角开关按钮动画效果
  12. cocos3——8.实现初学者指南
  13. 如何删除tomcat下的一目
  14. Javascript - DOM文档对象模型
  15. Vs2015 本地git获取的代码目录文件修改后,启动提示error:Unable to start program “C:\Program Files\dotnet\dotnet.exe” 已解决.
  16. Could not find method google() for arguments [] on repository container.
  17. shell之三大文本处理工具grep、sed及awk
  18. SpagoBI 教程 Lesson 1:Introduction and Installation
  19. Android应用安全防护和逆向分析 ——apk反编译
  20. 通过内存盘提高MSMQ的消息吞吐能力

热门文章

  1. POJ 3026 : Borg Maze(BFS + Prim)
  2. Black Box 分类: POJ 栈和队列 2015-08-05 14:07 2人阅读 评论(0) 收藏
  3. 山东理工大学第七届ACM校赛-经济节约 分类: 比赛 2015-06-26 10:34 19人阅读 评论(0) 收藏
  4. 浅谈Apache性能调优
  5. ListView Animation
  6. Apache+Tomcat+mod_jk负载均衡
  7. centos6.5 ssh安全优化,修改默认端口名,禁止root远程登录
  8. [HDOJ1232]畅通工程
  9. request 获取各种路径
  10. session 登陆浏览,并实现session注销登陆