【问题标题】:What is an Unusual Octet Order BOM什么是异常八位字节订单 BOM
【发布时间】:2013-09-02 08:18:51
【问题描述】:

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

XML docs:

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)

Universal Character Set Detector (UCSD) source(只是一个例子):

  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";

Universal Character Set Detector (UCSD) docs:

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

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

【问题讨论】:

    标签: xml endianness byte-order-mark


    【解决方案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 格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-17
      • 2015-10-17
      • 1970-01-01
      • 2016-05-27
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      • 2011-10-14
      相关资源
      最近更新 更多