如果我在MySQL中创建了一个utf-8列,并且所有字符都是ascii减去1,那么我可以存储多少个字符?
有人能解释一下吗?
发布于 2014-01-16 06:27:42
二十一,844
将是utf8中varchar的最大值。
这是实际的字符而不是字节。
例如,utf8字符每个字符最多需要三个字节,因此使用utf8字符集的VARCHAR列最多可以声明为21,844个字符。见E.7.4节,“表列计数和行大小的限制”。 MySQL将VARCHAR值存储为1字节或2字节长度前缀加数据.长度前缀表示值中的字节数。如果值不超过255个字节,则VARCHAR列使用一个长度字节;如果值需要超过255个字节,则使用两个长度字节。
前128个字符(US)需要一个字节。接下来的1,920个字符需要两个字节来编码。这涵盖了几乎所有拉丁字母的其余部分,也包括希腊语、西里尔语、科普特语、亚美尼亚语、希伯来语、阿拉伯语、叙利亚语和Tāna字母,以及Diacritical的组合。在基本的多语言平面(它几乎包含公共use11中的所有字符)的其余部分中,字符需要三个字节。Unicode的其他平面中的字符需要4个字节,其中包括不太常见的CJK字符以及各种历史脚本和数学符号。
https://stackoverflow.com/questions/21164371
复制相似问题