1

在 XML 文档和 Mozilla 通用字符集检测器 (UCSD) 的不同实现中,出现了一个 BOM 序列,其中字节顺序或单词顺序是颠倒的,但不是两者都颠倒,他们称之为“不寻常的八位字节顺序” :

XML 文档

F.1 Detection Without External Encoding Information
...
00 00 FF FE     UCS-4, unusual octet order (2143)
FE FF 00 00     UCS-4, unusual octet order (3412)

通用字符集检测器 (UCSD) 源(只是一个示例):

  if (('\xFF' == aBuf[1]) && ('\x00' == aBuf[2]) && ('\x00' == aBuf[3]))
    // FE FF 00 00 UCS-4, unusual octet order BOM (3412)
    mDetectedCharset = "X-ISO-10646-UCS-4-3412";

  else if (('\x00' == aBuf[1]) && ('\xFF' == aBuf[2]) && ('\xFE' == aBuf[3]))
    // 00 00 FF FE UCS-4, unusual octet order BOM (2143)
    mDetectedCharset = "X-ISO-10646-UCS-4-2143";

通用字符集检测器 (UCSD) 文档

Known character sets
...
X-ISO-10646-UCS-4-2143
X-ISO-10646-UCS-4-3412

是否存在任何使用这种字节序的硬件,是否有这样的编码或 ISO 标准,是否有任何流行的库支持编码/解码?为什么这些序列不像任何其他无效序列一样被忽略?

4

1 回答 1

1

ISO 10646 和 Unicode 仅包括大端和小端 UCS-4/UTF-32,不包括中端。据我所知,目前没有任何软件使用这些编码,它们实际上是无关紧要的。那么为什么 XML 标准会提到它呢?我不知道,但我想提到它是出于对理论完整性而非任何实际价值的渴望;这可能同样适用于包含对它的支持的字符检测/转换软件。

历史上,有一些系统使用了中端字节序;PDP-11 使用 3412 格式存储 32 位数字。因此,如果您要尝试在 PDP-11 上处理 UCS-4/UTF-32,则 UCS-4-3412 格式可能会很有用。但实际上,没有人尝试这样做,因为到 Unicode 出现时 PDP-11 已经过了鼎盛时期。并且由于 PDP-11 只是 16 位机器,UCS-4 并不是与它们一起使用的最佳 Unicode 格式。

于 2014-02-20T01:41:25.243 回答