UTF16

UTF-16是Unicode的其中一個使用方式。UTF是Unicode/UCS Transformation Format,即把Unicode轉做某種格式的意思。它定義於ISO/IEC 10646-1的附錄Q,而RFC2781也定義了相似的做法。

UTF-16 (UCS/Unicode Transformation Format 16)為Unicode的符號化文字的其中一種。UTF為 Unicode Transformation Format、ISO/IEC 10646 UCS Transformation Format的省略縮寫。ISO/IEC 10646的正式名稱為 UCS Transformation Format for 16 Planes of Group 00。Unicode 即 UTF-16。
UTF-16的1個文字使用16個BIT[2個BYTE] 為一個單位。即「-16」名字的由來。BMP(Basic multilingual Plane)標準內的文字、使用16個BIT 進行表示(可以與 ISO/IEC 10646的UCS-2相互替換使用)。BMP標準以外的文字,使用32個BIT [4個BYTE]進行表示。所以不要把UTF16誤認為只有兩個BTYE,長度為4個BYTE的情況也存在。
除了UTF16一個格式外,還存在UTF16-BE和UTF16-LE兩種UTF16的衍生格式。
UTF16[2 BYTE]格式說明:
1,固定位元組順序排列的的兩中UTF16格式[2BYTE]
UTF16-BE:高位元組BYTE在前
UTF16-LE:低位元組BYTE在前
1,不固定位元組順序排列的的UTF16格式[2BYTE]
通過字元串起始的兩個BOM特殊字元決定字元的高低位元組排序。
FE FF:高位元組BYTE在前
FF FE:低位元組BYTE在前
字元串也可以不包含BOM特殊位,默認為高位元組BYTE在前
以字元“M”為例,表示方式如下:
格式 “M”
UTF-16BE :00 4D
UTF-16LE :4D 00
UTF-16 :FE FF 00 4D 或 FF FE 4D 00
UTF16[4 BYTE]格式說明:
BMP包含的文字字元範圍為U+0x0000..U+0xD7FF和U+0xE000..U+0xFFFF['U+'的意義為Unicode字元集]
BMP以外的U+0x10000..U+0x10FFFF的字元數據需要表示為4個BYTE的格式。[U+0x10FFFF..以後的數據目前沒有字型檔使用到]
所以,當字元值的區間為0xD800..0xDFFF時,此UTF16字元為4位元組表示。
表示方法[二進制]:
000uuuuuxxxxxxxxxxxxxxxx[字元原值] ->110110wwwwxxxxxx 110111xxxxxxxxxx [UTF16格式]
wwww = uuuuu - 1
其中uuuuu為字元原值超出0xFFFF的部分
xxxxxxxxxxxxxxxx為0xFFFF之內的部分
以 “U+0x10302” 為例,表示方式如下:
格式 “U+10302 ”
UTF-16BE:D8 00 DF 02
UTF-16LE:00 D8 02 DF
UTF-16 :FE FF D8 00 DF 02 或 FF FE 00 D8 02 DF
注意:按照上述格式進行編碼存在同一字元串中即包含2 BYTE的UTF16字元,也包含4 BYTE的UTF16字元。需要在字元解析時注意。

相關詞條

相關搜尋

熱門詞條

聯絡我們