示例:
有一个表结构如下:create table a(name char(2));
有如下的SQL语句:
insert into a values('sa');
insert into a values('哦a');
insert into a values('哦哦');
都可以正常插入!而:
insert into a values('saa');
insert into a values('哦哦a');
insert into a values('哦aa');
都不可以正常插入!疑问:char(2) 表示占去2个字节的空间。而一个汉字就 = 2个字节
为什么可以插入像 insert into a values('哦哦'); 的呢?不是占了四个字节了吗?

解决方案 »

  1.   

    char(2) 表示占去2个字节的空间。
    char(2) 是两个字符!不是两个字节。而一个汉字就 = 2个字节
    一个汉字是一个字符,一个英文字母也是一个字符,但一个汉字未必是两个字节,要根据字符集而定。关于字符集可以参考下贴中相关部分。
    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  2.   

    看一下这列的编码方式,如果是unicode的,则每个字符和汉字占用的字节一样多。就是1个英文字符和1个汉字占相同的字节(2个字节)。
      

  3.   

    如果是unicode编码,则char(2)表示占4个字节。
      

  4.   

    的确是啊 一直以为char(2) 代表的就是两个字节呢 ,现在的gbk ,latin1都和unicode编码是一致的吧?