頂10篇文章

土豆
烏龜
薑黃
Gmail
第二次世界大戰
DirectX
光合作用
菲律賓
第一次世界大戰
板岩

News:

字節秩序標記

Unicode
字符內碼
UCS
映射
雙向文本
BOM
韓統一
Unicode和HTML
Unicode和電子郵件
Unicode字體

A 字節秩序標記 (BOM)是 Unicode 字符在代碼點 U+FEFF (「零寬度不間斷的空間」),當那個字符用於表示 endiannessUCS編碼的/Unicode字符 UTF-16UTF-32. 它常規地用於作為標誌表明文本被輸入 UTF-8, UTF-16UTF-32.

內容

用法

在多數字符內碼BOM是不太可能被看見在其他上下文的一個樣式(它通常將看似陰暗的控制碼序列)。 如果BOM是誤譯作為一個實際字符在Unicode文本之內那麼它一般無形歸結於它是a的事實 零寬度不間斷的空間. 用途對 U+FEFF 字符為non-BOM目的在Unicode (被貶抑了提供一個選擇的3.2, U+2060為那些其他目的),允許 U+FEFF 將單一地使用與語義BOM。

UTF-16 BOM (U+FEFF文件或小河的所有16位代碼單位)安置,當文件或字符小河的第一個字符表明endianness (字節順序)。

  • 如果16位單位使用大endian命令,這個BOM字符將出現於字節序列 0xFE 由跟隨 0xFF (「的地方0x「表明 十六進制);
  • 如果16位單位使用小endian,字節序列將有 0xFF 由跟隨 0xFE.

Unicode價值 U+FFFE 從未被保證被分配作為Unicode字符; 這暗示在Unicode上下文 0xFF, 0xFE 字節樣式可能只被解釋作為 U+FEFF 按小的endian字節順序表達的字符(因為它不可能是a U+FFFE 按大endian字節順序表達的字符)。

當時 UTF-8 沒有字節順序問題, BOM輸入在UTF-8可以使用標記文本作為UTF-8。 它只辨認一個文件作為UTF-8,并且不陳述什麼關於字節順序。[1] 相當多 窗口 軟件(包括窗口 筆記薄)加一到UTF-8文件。 Unix像 利用重的系統( 文本文件文件格式 並且為 過程間通信因為它將干涉正確處理重要代碼例如)沒有推薦這實踐 回鍋碎肉轟隆 在一個被解釋的劇本的開始。 它也許也干涉來源為不認可它的編程語言。 例如, gcc 報告迷路字符在源文件初和 PHP它有造成頁的微妙的作用開始送到瀏覽器,防止習慣倒栽跳水由PHP劇本,指定,如果產品中間轉換是殘疾。 BOM的UTF-8表示法是字節序列 EF B到B BF出現作為 ISO-8859-1 字符 ï」 ¿ 在多數 文本編輯程序 并且 網瀏覽器 沒準備處理UTF-8。

雖然BOM可能使用與 UTF-32這個內碼為傳輸很少使用。 否則規則和一樣為 UTF-16 為是可適用的, IANA 登記的charsets UTF-16BE、UTF-16LE、UTF-32BE和UTF-32LE a 「字節順序標記」 必需不使用,最初的U+FEFF必須被解釋作為a (被貶抑) 「零的寬度不間斷的空間」,因為這些charsets的名字已經確定字節順序。 為登記的charsets UTF-16和UTF-32最初的U+FEFF表明字節順序。

字節順序標記的表示法由內碼

內碼 表示法(十六進制)
UTF-8 EF B到B BF
UTF-16 () FE FF
UTF-16 (LE) FF FE
UTF-32 (是) 00 00隻FE FF
UTF-32 (LE) FF FE 00 00
UTF-7 2B 2F 76 以下字節: [38 | 39 | 2B | 2F]
UTF-1 F7 64 4C
UTF-EBCDIC DD 73 66 73
SCSU 0E FE FF
BOCU-1 FB EE 28 由任意地跟隨 FF
  • ^  在UTF-8,這真正地不是一個「字節順序」標記。 因為UTF-8沒有字節順序問題,它辨認文本作為UTF-8,但不認為什麼關於字節順序。[1][2]
  • ^  在UTF-7, BOM的第四個字節,在內碼之前 base64001111xx 在雙,和 xx 取決於下個字符(第一個字符在BOM以後)。 因此,技術上,第四個字節不純粹是BOM的部分,而且包含關於下個(non-BOM)字符的信息。 為 xx=00, 01, 10, 11這個字節分別為, 38, 39, 2B或者 2F 當輸入作為base64時。 如果跟隨的字符沒有被輸入, 38 為第四個字節使用,并且以下字節是 第2.
  • ^  SCSU允許U+FEFF其他內碼,顯示的形式是在UTR推薦的署名#6。[3]
  • ^  為BOCU-1署名改變譯碼器的狀態。 八重唱0xFF重新設置譯碼器對初始狀態。[4]

參考

  1. ^ a b 常見問題解答- UTF-8、UTF-16、UTF-32 & BOM : UTF-8數據流能包含BOM字符(以UTF-8形式) ? 仍然如果是,我可以然後假設剩餘的UTF-8字節按大endian順序?. 檢索 2008-03-29.
  2. ^ STD 63 : UTF-8, ISO 10646的變革 字節順序標記(BOM)
  3. ^ UTR #6 : 署名字節序列為SCSU
  4. ^ UTN #6 : 署名字節序列

外部鏈接

The original article is from Wikipedia. To view the original article please click here.
Creative Commons Licence