gpt4 book ai didi

encoding - 我们需要多少个字节来存储阿拉伯字符

转载 作者:行者123 更新时间:2023-12-02 06:09:59 25 4
gpt4 key购买 nike

我对表示阿拉伯字符所需的存储空间有些困惑。

如果是这样,请告诉我:

  • 采用ISO / IEC 8859-6编码,需要2个字节(http://en.wikipedia.org/wiki/ISO/IEC_8859-6)
  • UNICODE中的
  • 需要4个字节(http://en.wikipedia.org/wiki/Arabic_Unicode)

  • 每种编码的优点是什么?我们什么时候应该优先于另一个?

    最佳答案

    首先,Unicode不是编码。这是为每种语言的每个字符分配代码点的标准。这些代码点是整数。它们占用多少字节取决于特定的编码。最常见的Unicode编码是UTF-8和UTF-16。

    总结一下:

  • ISO 8859-6的每个阿拉伯字符使用1个字节,但不支持“阿拉伯语表示形式”,也不支持除ASCII之外的任何其他脚本中的字符。
  • UTF-8每个阿拉伯字符使用2个字节,对于“阿拉伯语表示形式”使用3个字节。
  • UTF-16为每个阿拉伯字符使用2个字节,包括“阿拉伯语表示形式”。

  • 我将使用两个示例:“ح”(U + 062D)和“ﻰ”(U + FEF0)。这些数字是十六进制代码,代表每个字符的Unicode代码点。

    在ISO 8859-6中,大多数阿拉伯字符仅占用一个字节,因为该编码专用于阿拉伯语。例如,从 Wikipedia article上的表中可以看到,字符“ح”(U + 062D)被编码为单字节“CD”。字符“ﻰ”(U + FEF0)被列为“阿拉伯语表示形式”,因此我想解释一下为什么它根本不在ISO 8859-6中出现(您不能以这种编码方式对该字符进行编码) 。

    有两种非常常见的Unicode编码,可以对所有字符进行编码: UTF-8UTF-16。它们的用途略有不同。 UTF-8使用1个字节表示ASCII字符,使用2到3个字节表示基本字符(包括所有阿拉伯语),使用4个字节表示其他字符。 UTF-16的基本字符使用2个字节,其他字符使用4个字节。因此,基本上,如果您使用大量ASCII,则UTF-8更好。对于国际文本,UTF-16更好。

    在UTF-8中,“ح”(U + 062D)被编码为2字节序列“D8 AD”,而“ﻰ”(U + FEF0)被编码为3字节序列“EF BB B0”。基本上,U + 0080和U + 07FF之间的字符使用2个字节,U + 07FF和U + FFFF之间的字符使用3个字节。因此,所有基本阿拉伯语和阿拉伯语补充字符都使用2个字节,而阿拉伯语表示形式使用3个字节。

    在UTF-16中,“ح”(U + 062D)被编码为2字节序列“2D 06”,而“ﻰ”(U + FEF0)被编码为2字节序列“F0 FE”。在UTF-16中,所有阿拉伯字符均为两个字节。字节顺序使情况更加复杂。请注意,UTF-16中的字节只是两部分互换的代码点。同样有效的编码是第一个为“06 2D”,第二个为“FE F0”。

    总之,我通常会推荐UTF-8,因为它是明确的,并且很好地支持ASCII文本。两种编码中的阿拉伯字符均为2个字节(除非您使用“表示形式”)。如果仅使用ASCII和阿拉伯字符,而没有其他用途,则可以使用ISO 8859-6,这样可以节省一些空间,但这通常是不值得的,因为一旦出现其他字符,它将立即中断。 UTF-8和UTF-16支持Unicode中的所有字符。

    关于encoding - 我们需要多少个字节来存储阿拉伯字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4322191/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com