UTF-8:语言用来表示可见字符的字节数是多少?

时间:2013-01-23 17:21:18

标签: unicode utf-8 character byte glyph

当编码为utf8时,是否存在表格或类似内容,以显示不同语言平均需要多少字节来表示可见字符(字形)?

2 个答案:

答案 0 :(得分:12)

如果你想要一些通用的东西,我认为你应该坚持这一点:

  • 英语每个字符的略微超过1个字节(偶尔存在非ASCII字符,通常是标点符号或文本中嵌入的符号)。
  • 大多数使用拉丁字母的其他语言使用的语言略多于1,但如果您的期望超过1.5,我会感到惊讶。
  • 使用其他一些脚本(希腊语等)的语言每个字符占用大约2个字节。
  • 东亚语言每个字符占用大约3个字节(间距,控制字符和嵌入式ASCII使得它需要更少,非BMP使它需要更多)。

这些都是非常不完整,近似和非定量的。

如果您需要更多量化的东西,我认为您必须单独研究每种语言。我怀疑你会发现已经适用于许多不同语言的预先计算结果。

如果您拥有某种语言的文本语料库,则可以轻松计算所需的平均字节数。从Text corpus维基百科页面开始。它链接到至少一个免费提供的英语语料库,也可能有一些其他语言可用(我没有通过链接查找)。

顺便说一句,我不建议使用此信息来截断您打算(在注释中)要执行的数据库字段的长度。首先,如果您使用由文学组成的语料库来提出每个字符的预期字节数,您可能会发现语料库完全不代表最终存在于数据库中的短文本字符串,从而丢失你的期望。只需获取整个数据库列。大多数结果将比最大长度短得多,当它们不是时,我认为你的优化不值得节省一百个字节左右。

答案 1 :(得分:7)

查看Unicode块列表及其代码点范围,例如可浏览http://www.fileformat.info/info/unicode/block/index.htm或官方http://www.unicode.org/Public/UNIDATA/Blocks.txt

  • U + 007F之前的任何内容都需要1个字节:Basic Latin
  • 然后到U + 07FF它需要2个字节:希腊语,阿拉伯语,西里尔语,希伯来语等
  • 然后到U + FFFF需要3个字节:中文,日文,韩文,梵文等
  • 除此之外需要4个字节