Unicode 为什么没有UTF-24?

Unicode 为什么没有UTF-24?,unicode,character-encoding,utf-32,Unicode,Character Encoding,Utf 32,可能重复: UTF-32中的最大Unicode代码点为0x10FFFF。UTF-32有21个信息位和11个多余的空白位。那么,为什么没有UTF-24编码(即删除高字节的UTF-32)来将每个代码点存储在3个字节而不是4个字节中呢?事实是:UTF-24是在2007年提出的: 提到的优点和缺点是: 正如David Starner在《金融时报》中指出的: 为什么??UTF-24几乎总是比UTF-16大,除非 正在谈论旧斜体或哥特式的文档。数学字母数字 字符几乎总是与足够的ASCII组合在一起,以使

可能重复:


UTF-32中的最大Unicode代码点为0x10FFFF。UTF-32有21个信息位和11个多余的空白位。那么,为什么没有UTF-24编码(即删除高字节的UTF-32)来将每个代码点存储在3个字节而不是4个字节中呢?

事实是:UTF-24是在2007年提出的:

提到的优点和缺点是:

正如David Starner在《金融时报》中指出的:

为什么??UTF-24几乎总是比UTF-16大,除非 正在谈论旧斜体或哥特式的文档。数学字母数字 字符几乎总是与足够的ASCII组合在一起,以使 UTF-8获胜,如果没有,则有足够的BMP字符使UTF-16获胜。 现代计算机不能很好地处理24位数据块;在记忆中,他们 除非你声明包装好,否则一块32比特,然后 他们会比UTF-16或UTF-32慢很多。如果您要存储到 磁盘,您也可以使用BOCU或SCSU(您已经在 非标准),或使用UTF-8、UTF-16、BOCU或 SCSU。SCSU或BOCU压缩应占据UTF-24的一半空间, 如果是的话

您还可以检查以下StackOverflow post:


原因很简单,因为没有24结构。有16,32,8,2,所以24是奇数。另外,内存块通常是以2^x的块的形式提供的……这与computere没有配备24MB或HDD没有宣传24GB而不是16GB和32GB的原因是一样的。第二句话实际上是几年前,从2003年开始,作为对我建议的回应。就我个人而言,我希望看到它们的扩展。我知道还有很多空间,但是他们还没有完成所有的语言,尤其是历史语言。我相信在Python中,类似UTF24的字符串是默认的。
"UTF-24 
Advantages: 
 1. Fixed length code units. 
 2. Encoding format is easily detectable for any content, even if mislabeled. 
 3. Byte order can be reliably detected without the use of BOM, even for single-code-unit data. 
 4. If octets are dropped / inserted, decoder can resync at next valid code unit. 
 5. Practical for both internal processing and storage / interchange. 
 6. Conversion to code point scalar values is more trivial then for UTF-16 surrogate pairs 
    and UTF-7/8 multibyte sequences. 
 7. 7-bit transparent version can be easily derived. 
 8. Most compact for texts in archaic scripts. 
Disadvantages: 
 1. Takes more space then UTF-8/16, except for texts in archaic scripts. 
 2. Comparing to UTF-32, extra bitwise operations required to convert to code point scalar values. 
 3. Incompatible with many legacy text-processing tools and protocols. "