在XML文档和Mozilla通用字符集检测器(UCSD)的不同实现上,出现了一个BOM序列,其中字节顺序或字顺序是相反的,但不是两者都有,他们称之为“不寻常”八位字节顺序':
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标准,有没有支持编码/解码的流行的lib? 为什么这些序列不会像其他无效序列一样被忽略?
答案 0 :(得分:1)
ISO 10646和Unicode仅包括big-endian和little-endian 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格式。