UTF-8是Unicode的其中一個使用方式。 UTF是 Unicode Translation Format,即把Unicode轉做某種格式的意思。
它定義於ISO 10646,而RFC3629也定義了相似的做法。
使用UTF-8的原因[]
由於要使文字檔案之中的文字與ASCII兼容,故此 UTF-8 選擇了使用可變長度字節來儲存 Unicode ,例如,原來的 ASCII字母繼續使用1字節儲存,而重音文字、希臘字母或西里爾字母等使用2字節來儲存,而常用的漢字就要使用3字節,至於輔助平面字元則使用4字節。
UTF-8的編碼模式[]
UTF-8不使用大尾序和小尾序的形式。每個使用UTF-8儲存的字符,除了第一個字節外,其餘字節的頭兩個位元都是以 "10" 開始,使文字處理器能夠較快地找出每個字符的開始位置。
* 0xxxxxxx (00-7f) * 110xxxxx 10xxxxxx (c0-df)(80-bf) * 1110xxxx 10xxxxxx 10xxxxxx (e0-ef)(80-bf)(80-bf) * 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx (f0-f7)(80-bf)(80-bf)(80-bf) * 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx (f8-fb)(80-bf)(80-bf)(80-bf)(80-bf) * 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx (fc-fd)(80-bf)(80-bf)(80-bf)(80-bf)(80-bf)
為了和UTF-16的編碼空間一致,在最新的ISO 10646的標準裡,最多-{}-只使用4字節編碼。5字節及6字節UTF-8已不會再使用。
在UTF-8文件的開首,很多時都放置一個U+FEFF字符 (UTF-8 以 EF,BB,BF 代表),以顯示這個文字檔案是以UTF-8編碼。
對 UTF-8 的批評[]
UTF-8 使用可變長度字節儲存,使電腦程式設計變得複雜。 (故此,在電腦程式或操作系統內部,多採用UCS-2編碼。)
在舊式的中文、日文及韓文編碼之中,每字元都使用2字節儲存,而UTF-8須使用3字節。 (採用UTF-16編碼則可只使用2字節儲存。)
泰語以往使用的ISO 8859-11,每字元只使用1字節儲存,而UTF-8須使用3字節。
外部連結[]
- Rob Pike tells the story of UTF-8's creation
- Original UTF-8 paper
- RFC 3629, UTF-8 標準
- RFC 2277, IETF policy on character sets and languages
- UTF-8 和 Unicode FAQ
- UTF-8
- UTF-8 測試頁
- 另一個 UTF-8 測試頁
- UTF-8 and Debian 和 Linux UTF-8 How-To.
模板:Unicode related