现在的数据库,一个中文是一个字符还是两个字符?就是定义一个六个汉字的字段要定义为varchar(12)还是varchar(6)?

解决方案 »

  1.   

    在MYSQL中准确的说是一个字符!但未必是一个字节或几个字节。这个要根据你的字符集设置而定。比如GBK则一个中文是2个字节。
    而UTF8则一个中文是3个字节。更多说明,可以参考下贴中关于字符集部分的简单说明。
    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  2.   

    楼主为什么不自己试下呢?varchar(6)就好了,类型带的数字是显示的数量,占用的字符和类型没关系,和字符集有关系;
      

  3.   

    就是啊,实践出真知。试一下,你就知道了。mysql的长度是字符,而不是字节。
      

  4.   

    mssql,中文一般用nvarchar,如果6个中文字,定义地段长度为nvarchar(6)
      

  5.   

    汉字如果用utf-8编码 则三个字节
      

  6.   


    不是字符,而是占据几个字节的问题!而且这还很字符编码有关,比如gbk中,一个中文只占据2个字节。就是2bytes;而在utf-8中,则占据3个字节,那是utf-8是国际通用的,所以英文一个字节中文2个字节,总共需要3个字节,也就是3bytes。现在明白了吧。
      

  7.   

    按一个汉字 3Bytes大小来估算总长度需求就好。
      

  8.   

    最近遇到过数据库表的key长度超标的情况
    才搞懂了字符编码不同,各自所占的字节数
    编码设为UTF-8时,超标
    latin1时,不超标
    我们系统没有中文,于是latin1就行了。一个字符只用1字节存储。
      

  9.   

    看编码吧。。
    gbk 一个汉字 2个字节 定义6个汉字 需要 varchar(12)
    utf-8 一个汉字 3个字节 定义6个汉字 需要 varchar(18)