2013-08-29 51 views
1

在XML文檔和Mozilla通用字符集檢測器(UCSD)的不同實現上,出現了一個BOM序列,其中字節順序或字順序顛倒了,但不是兩個和他們稱之爲 '不尋常的八位位組序':什麼是不尋常的八位字節訂單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標準,有沒有支持編碼任何流行的庫/解碼嗎? 爲什麼這些序列不像其他任何無效序列一樣被忽略?

回答

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格式。

相關問題