複製鏈接
請複製以下鏈接發送給好友

UTF-16

鎖定
UTF-16是Unicode字符編碼五層次模型的第三層:字符編碼表(Character Encoding Form,也稱為 storage format)的一種實現方式。即把Unicode字符集的抽象碼位映射為16位長的整數(即碼元)的序列,用於數據存儲或傳遞。Unicode字符的碼位,需要1個或者2個16位長的碼元來表示,因此這是一個變長表示。
中文名
UTF-16
解    釋
Unicode字符編碼五層次模型
定義於
ISO/IEC 10646-1的附錄Q
在用形式
UTF-16的大尾序和小尾序

UTF-16簡介

UTF-16是Unicode的其中一個使用方式。UTF是Unicode Transfer Format的縮寫,即把Unicode轉做某種格式的意思。
它定義於ISO/IEC 10646-1的附錄Q,而RFC2781也定義了相似的做法。
在Unicode基本多文種平面定義的字符(無論是拉丁字母、漢字或其他文字或符號),一律使用2字節儲存。而在輔助平面定義的字符,會以代理對(surrogate pair)的形式,以兩個2字節的值來儲存。
UTF-16比起UTF-8,好處在於大部分字符都以固定長度的字節(2字節)儲存,但UTF-16卻無法兼容於ASCII編碼。

UTF-16編碼模式

UTF-16的大尾序和小尾序儲存形式都在用。一般來説,以Macintosh製作或儲存的文字使用大尾序格式,以Microsoft或Linux製作或儲存的文字使用小尾序格式。
為了弄清楚UTF-16文件的大小尾序,在UTF-16文件的開首,都會放置一個U+FEFF字符作為Byte Order Mark(UTF-16LE以FF FE代表,UTF-16BE以FE FF代表),以顯示這個文字檔案是以UTF-16編碼,其中U+FEFF字符在UNICODE中代表的意義是ZERO WIDTH NO-BREAK SPACE,顧名思義,它是個沒有寬度也沒有斷字的空白。

UTF-16相關聯繫

UTF-16與UCS-2的關係
UTF-16可看成是UCS-2的父集。在沒有輔助平面字符(Surrogate Code Points)前,UTF-16與UCS-2所指的是同一的意思。但當引入輔助平面字符後,就稱為UTF-16了。現在若有軟件聲稱自己支持UCS-2編碼,那其實是暗指它不能支持在UTF-16中超過2字節的字集。對於小於0x10000的UCS碼,UTF-16編碼就等於UCS碼。