mysql字符集测试中的若干疑义

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 中文显示乱码

mysql字符集测试中的若干疑义

相关文章:

你感兴趣的文章:

标签云: