今天创建索引时,两个varchar(200)+utf8的列就报索引过长超过1000而失败,查了一下资料,原来是因为一个uft8最长占3个字节,具体如下:
UTF- 8:Unicode Transformation Format-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三 个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显 示。如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。
关于UTF-8编码的详细内容,请参看:http://zh.wikipedia.org/zh/UTF-8。
UTF-8编码是可变长度的编码,根据所要编码的字元来确定其具体长度,以前有个认识误区,以为UTF-8存储数据时的长度是固定的。