Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不同语言的最小Unicode编码?_Unicode - Fatal编程技术网

不同语言的最小Unicode编码?

不同语言的最小Unicode编码?,unicode,Unicode,不同语言中不同unicode编码的典型平均每字符字节率是多少 例如,如果我想要最小的字节数来编码一些英文文本,那么平均而言,UTF-8将是每个字符1字节,UTF-16将是2字节,因此我选择UTF-8 如果我想要一些韩文文本,那么UTF-16可能平均每个字符大约2个,但UTF-8可能平均大约3个(我不知道,我只是在这里编一些说明性的数字) 对于不同的语言和字符集,哪种编码产生的存储需求最小?对于任何给定的语言,每个字符的字节率都是相当恒定的,因为大多数语言都分配给连续的代码页。最大的例外是重音拉丁

不同语言中不同unicode编码的典型平均每字符字节率是多少

例如,如果我想要最小的字节数来编码一些英文文本,那么平均而言,UTF-8将是每个字符1字节,UTF-16将是2字节,因此我选择UTF-8

如果我想要一些韩文文本,那么UTF-16可能平均每个字符大约2个,但UTF-8可能平均大约3个(我不知道,我只是在这里编一些说明性的数字)


对于不同的语言和字符集,哪种编码产生的存储需求最小?

对于任何给定的语言,每个字符的字节率都是相当恒定的,因为大多数语言都分配给连续的代码页。最大的例外是重音拉丁字符,它在代码空间中的分配比非重音形式高。我没有关于这些的确切数字

对于具有连续字符分配的语言,维基百科上有一个。一般来说,UTF-8适用于大多数小字符集(在高代码页上分配的字符集除外),UTF-16适用于双字节字符集

如果您需要更密集的压缩,您可能还想看一看,它比较了一些为减少各种语言的数据大小而设计的特殊用途编码。但这些技术并不特别常见。

UTF-8

Joelon软件上有一篇关于unicode的非常好的文章:


UTF8最适用于字符主要低于U+0800的任何字符集。否则为UTF16


也就是说,UTF8表示拉丁语、希腊语、西里尔语、希伯来语和阿拉伯语以及其他几种语言。在除拉丁语以外的语言中,字符将占用与UTF16相同的空间,但您可以在标点和间距上节省字节。

如果您真的担心字符串/字符的大小,您是否考虑过压缩它们?这将自动将字符串压缩为“最小”编码。这是一个让人头疼的问题,尤其是如果你想在记忆中使用它,而且在很多情况下,它不会给你带来任何好处,但是编码,尤其是编码,往往过于通用,无法达到你想要的紧凑程度

在UTF-16中,所有重要的语言(即除克林贡语、精灵和其他奇怪的东西以外的任何语言)都将被编码为2字节字符

因此,问题是要找到那些具有2字节或1字节大小字符的字形的语言

在UTF-8的维基百科页面中:

我们看到,unicode索引为0x0800或更高的字符在UTF-8中至少有3个字节长

要知道这一点,您只需查看unicode上的代码图表:

适用于符合您要求的语言

:-)

现在,请注意,根据您正在使用的框架,您很可能无法做出以下选择:

  • 在Windows API上,Unicode由wchar\u t chars处理,是UTF-16
  • 在Linux上,Unicode由char处理,是UTF-8
  • Java内部是UTF-16,大多数兼容的XML解析器也是如此
  • 有人告诉我(我对一些技术会议不感兴趣……对不起……),UTF-8是数据库选择的编码
所以,拿起你的毒药


:-)

我不知道确切的数字,但对于日文Shift_JIS,平均每个字符的字节数比UTF-8少,EUC-JP也是如此,因为它们是针对日文文本优化的。但是,它们没有覆盖Unicode相同的代码点空间,因此它们可能不是您问题的正确答案

对于日语字符,UTF-16比UTF-8好(每个字符2字节,而不是3字节),但如果有大量7位字符,则比UTF-8差。这取决于上下文-技术文本更可能包含大量1字节范围内的字符。一个经典的日文文本可能没有

请注意,对于传输,如果可以压缩(gzip,bz2)数据,则编码没有多大关系。Unicode中字母表的代码点非常接近,因此在压缩数据中,您可能会看到带有非常短表示形式的公共前缀

UTF-8通常很适合在内存中表示,因为它通常比UTF-32或UTF-16更紧凑,并且与“预期”ASCII或ISO-8859-1 NUL终止字符串的char*上的函数兼容。但是,如果您需要通过索引随机访问字符,那么它是无用的


如果您不关心非BMP字符,UCS-2总是每个字符2个字节,因此提供随机访问。但这取决于你所说的“Unicode”是什么意思。

我想赞扬下一个投票人,因为他/她在通过评论解释下一个投票的原因时表现出了大胆的下一个投票,而他/她却缺乏勇气……^ ^。。。也许他们会说汉语或越南语,你说他们的语言无关紧要,他们很不高兴,因为一些统一的汉人字符在平面2中。也许他们说克林贡语,你似乎认为电影中的符号(在任何地方都不是Unicode)是标准的,而拉丁语是克林贡语的标准脚本,这让他们感到不安