12

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

4

2 回答 2

15

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

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

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

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

如果您有一种语言的文本语料库,则很容易计算所需的平均字节数。从文本语料库维基百科页面开始。它链接到至少一个很好的免费可用的英语语料库,并且可能还有一些可用于其他语言的语料库(我没有通过链接查找)。

顺便说一句,我不建议您使用此信息来截断您打算执行的(在评论中)的数据库字段的长度。首先,如果您使用由文献组成的语料库来得出您预期的每个字符的字节数,您可能会发现语料库根本不能代表最终在您的数据库中的短小文本字符串,甩掉你的期望。只需获取整个数据库列。大多数结果将比最大长度短得多,如果不是,我认为您的优化不值得节省一百字节左右。

于 2013-01-23T19:15:51.130 回答
9

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

  • U+007F 之前的任何内容都占用 1 个字节:基本拉丁语
  • 然后到 U+07FF 它需要 2 个字节:希腊语、阿拉伯语、西里尔语、希伯来语等
  • 然后到 U+FFFF 需要 3 个字节:中文、日文、韩文、梵文等
  • 除此之外,它需要 4 个字节
于 2013-01-24T06:37:21.887 回答