mysql字符集测试中的若干疑问
求教关于mysql字符集的问题, 我在对mysql字符集这一块的学习中遇见下面这样一个很让人困惑的问题, 希望能得到你们的帮助
CREATE TABLE `t1` (
`x` char(100) CHARACTER SET gb2312 DEFAULT NULL,
`y` char(100) CHARACTER SET latin1 DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
使用windows命令行程序(它使用的是GB2312编码)
1. select @@character_set_client, @@character_set_connection, @@character_set_results 均返回utf8(系统默认值)
2. insert into t1 values('中', '国'), 提示 Incorrect string value
3. 设置set @@character_set_client=gb2312的时候, 可以执行insert into t1(x)...... x是一个要求gb2312的列
4. 设置set @@character_set_client=latin1的时候, 可以执行insert into t1(y)...... y是一个要求latin1的列
那么这里我总结出, 如果要想正确插入数据, 那么@@character_set_client设置的字符集必须与字段的字符集一致???
CREATE TABLE `t2` (
`x` char(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
使用windows命令行程序(它使用的是GB2312编码)
1. select @@character_set_client, @@character_set_connection, @@character_set_results 均返回utf8(系统默认值)
2. insert into t2 values('中'); 提示 Incorrect string value
3. 设置set @@character_set_client=gb2312的时候, 可以执行insert into t2 values('中')......
但是这里我有觉得困惑了, @@character_set_client的设置在这里与列的字符集类型(utf85)并不一致, 为什么还能执行成功???
=================================================================================
非常感谢
------解决方案--------------------
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码