如果我在MySQL中创建一个utf-8列,并且所有字符都是ascii减去1,那么我可以存储多少个字符?
有人可以解释一下吗?
答案 0 :(得分:0)
21844
将是utf8中varchar的最大值。
它的实际字符不是字节。
例如,utf8字符每个最多需要三个字节 字符,所以使用utf8字符集的VARCHAR列可以 声明最多21,844个字符。见E.7.4节, “对表列数和行大小的限制”。
MySQL将VARCHAR值存储为1字节或2字节长度的前缀加上 数据。长度前缀表示值中的字节数。一个 如果值不超过255,则VARCHAR列使用一个长度字节 如果值可能需要超过255个字节,则为两个长度字节。
前128个字符(US-ASCII)需要一个字节。接下来的1,920 字符需要两个字节来编码。这涵盖了其余部分 几乎所有的拉丁字母,还有希腊语,西里尔语,科普特语, 亚美尼亚语,希伯来语,阿拉伯语,叙利亚语和Tāna字母表,以及 结合变音符号。字符中需要三个字节 基本多语言平面的其余部分(几乎包含所有 常用字符[11])。字符中需要四个字节 Unicode的其他平面,包括不太常见的CJK字符 和各种历史剧本和数学符号。