2014-01-16 139 views
0

如果我在MySQL中创建一个utf-8列,并且所有字符都是ascii减1,那么我可以存储多少个字符?在这种情况下的MySQL大小?

有人能解释一下吗?

+0

它是字符或字符变化? – Michas

+0

这是TEXT或VARCHAR,还不确定。 –

回答

0

21,844

将是utf8中varchar的最大值。

它是实际字符而不是字节。

from MySQL doc

例如,UTF8字符可以要求每个 字符最多三个字节,所以使用UTF8字符集VARCHAR列可以声明为最大的字符21844 。请参见部分E.7.4, “表列数和行大小的限制”。

MySQL将VARCHAR值存储为1字节或2字节长度的前缀加上 数据。长度前缀表示该值中的字节数。 A 如果值不超过255个字节,则VARCHAR列使用一个长度字节,如果值可能需要超过255个字节,则使用两个长度字节。

from Wiki

的前128个字符(US-ASCII)需要一个字节。接下来的1,920 字符需要两个字节进行编码。这包括 的其余部分几乎所有的拉丁字母,也包括希腊文,西里尔文,科普特文, 亚美尼亚文,希伯来文,阿拉伯文,叙利亚文和塔那文字母,以及 结合变音符号。对于 字符需要三个字节,其余的基本多语言平面(其中几乎包含所有 个常用字符[11])。 Unicode的其他平面中的字符需要4个字节,其中包括不常见的CJK字符 和各种历史脚本和数学符号。

+0

这将占用多少字节空间? –

+0

是的,但我的意思是,ASCII字符,每个将需要1个字节的空间或3? –