維基百科,自由的百科全書(shū)
跳轉(zhuǎn)到: 導(dǎo)航, 搜尋
UTF-16是Unicode的其中一個(gè)使用方式。 UTF是 Unicode/UCS Transformation Format,即把Unicode轉(zhuǎn)做某種格式的意思。
它定義于ISO/IEC 10646-1的附錄Q,而RFC2781也定義了相似的做法。
在Unicode基本多文種平面定義的字符(無(wú)論是拉丁字母、漢字或其它文字或符號(hào)),一律使用2字節(jié)儲(chǔ)存。而在輔助平面定義的字符,會(huì)以代理對(duì)(surrogate pair)的形式,以?xún)蓚€(gè)2字節(jié)的值來(lái)儲(chǔ)存。
UTF-16比起UTF-8,好處在于大部分字符都以固定長(zhǎng)度的字節(jié) (2字節(jié)) 儲(chǔ)存,但UTF-16卻無(wú)法兼容于ASCII編碼。
[編輯] UTF-16的編碼模式
UTF-16的大尾序和小尾序儲(chǔ)存形式都在用。一般來(lái)說(shuō),以Macintosh制作或儲(chǔ)存的文字使用大尾序格式,以Microsoft或Linux制作或儲(chǔ)存的文字使用小尾序格式。
為了弄清楚UTF-16文件的大小尾序,在UTF-16文件的開(kāi)首,都會(huì)放置一個(gè)U+FEFF字符作為Byte Order Mark (UTF-16LE 以 FF FE 代表,UTF-16BE 以 FE FF 代表),以顯示這個(gè)文本文件是以UTF-16編碼,其中U+FEFF字符在UNICODE中代表的意義是ZERO WIDTH NO-BREAK SPACE,顧名思義,它是個(gè)沒(méi)有寬度也沒(méi)有斷字的空白。
以下的例子有三個(gè)字符:「朱」(U+6731)、半角逗號(hào) (U+002C)、「聿」(U+807F)。
使用 UTF-16 編碼的例子 |
編碼名稱(chēng) | 編碼次序 | 編碼 |
BOM | "朱" | "," | "聿" | |
UTF-16LE | 小尾序 | | 31 67 | 2C 00 | 7F 80 | |
UTF-16BE | 大尾序 | | 67 31 | 00 2C | 80 7F | |
UTF-16 | 小尾序,包含BOM | FF FE | 31 67 | 2C 00 | 7F 80 | |
UTF-16 | 大尾序,包含BOM | FE FF | 67 31 | 00 2C | 80 7F | |
[編輯] UTF-16 與 UCS-2 的關(guān)系
UTF-16可看成是UCS-2的父集。在沒(méi)有輔助平面字符前,UTF-16與UCS-2所指的是同一的意思。但當(dāng)引入輔助平面字符后,就只稱(chēng)為UTF-16了?,F(xiàn)在若有軟件聲稱(chēng)自己支持UCS-2編碼,那其實(shí)是暗指它不能支持輔助平面字符的委婉語(yǔ)。