UTF-8 - 字嗨!
文章推薦指數: 80 %
UTF-8是Unicode的一種可變長度的字元編碼形式。
它設計來相容於ASCII,讓原本處理ASCII字元 ... 0800~FFFF, 3, 1110xxxx (E0-EF), 10xxxxxx (80-BF), 10xxxxxx (80-BF).
字碼漢字登入
UTF-8📄💬
UTF-8是Unicode的一種可變長度的字元編碼形式。
它設計來相容於ASCII,讓原本處理ASCII字元的軟體幾乎無須修改,即可處理Unicode資料。
因此它成為E-mail、網頁、程式碼等各種純文字文件處理Unicode時最通用的編碼方式。
編碼方式
碼點範圍序列長度Byte1Byte2Byte3Byte4
0000~007F10xxxxxxx(00-7F)
0080~07FF2110xxxxx(C0-DF)10xxxxxx(80-BF)
0800~FFFF31110xxxx(E0-EF)10xxxxxx(80-BF)10xxxxxx(80-BF)
10000~10FFFF411110xxx(F0-F7)10xxxxxx(80-BF)10xxxxxx(80-BF)10xxxxxx(80-BF)
範例
碼位(二進位)UTF-8(二進位)
U+0041A00000000010000014101000001
U+03C9ω0000001111001001CF891100111110001001
U+20AC€0010000010101100E282AC111000101000001010101100
U+2C9B0𬦰000000101100100110110000F0ACA6B011110000101011001010011010110000
特性
完全向下相容ASCII編碼範圍,所以多數既有的編譯器等軟體可以正常處理UTF-8資料。
基本多語言平面內的一般常用漢字佔3個bytes,比UTF-16與傳統Big5、Shift_JIS等編碼的2bytes要長。
但實際上因為多數文件還是ASCII文字比例最高(如HTML文件有大量的HTMLtag),多數情況下UTF-8會比UTF-16檔案總長度更短。
UTF-8容易檢查錯誤,例如一個0xE0~0xEF的位元組可判斷其後面必須跟隨剛好兩個0x80~0xBF的位元組。
但也因此造成一定程度的浪費。
CESU-8
UTF-16使用代理對的方式來處理補充平面的文字,在一些UTF-8的變形實作上,存在有誤把代理對直接依照UTF-8編碼方式進行轉換的問題。
例如U+1F44D👍的正確UTF-8應該編成F09F918D。
但某些實作卻把UTF-16的代理對D83DDC4D各自編碼為EDA0BD與EDB18D,共6個bytes。
這並不是正確的UTF-8編碼,Unicode官方文件(UTF-16的8位元相容編碼方式)規定這只能做為內部編碼,不應該用來交換資料。
W3C也規定HTML不應使用這種編碼形式,以免造成無法預期的XSS風險。
但實際上可能因為一些資料庫、程式語言的錯誤實作,偶爾會在網址列等處看到這樣的資料。
本站編碼資訊欄的「URLEncode」處有標註CESU-8的值,僅供參考,不建議使用。
MySQL編碼
MySQL資料庫早年支援的UTF-8實際上一直只支援3bytes為止的範圍,而無法支援補充平面裡的擴充漢字等文字。
一直到2010年,才終於推出新的「utf8mb4」編碼去支援4bytes的Unicode文字。
隨著Emoji的風行,使用MySQL的各網站、論壇逐步才改以「utf8mb4」儲存資料。
參見
Unicode
UTF-16
基本多語言平面
補充平面
建立於2022年3月15日11時18分本條目共被1位不同作者編輯過3次最後一次修改於2022年3月17日22時02分關於本站|關於字碼資料庫
延伸文章資訊
- 1UTF-8 - 字嗨!
UTF-8是Unicode的一種可變長度的字元編碼形式。它設計來相容於ASCII,讓原本處理ASCII字元 ... 0800~FFFF, 3, 1110xxxx (E0-EF), 10xxxxx...
- 2UTF-8字符「EF BF BD」-备胎_mob604756f87695的技术博客
UTF-8字符「EF BF BD」-备胎,在众多的utf-8码点值中,除了ascii,你还应该记住「EFBFBD」,因为它是很多编程语言以及库中的备胎,即无效的码点值在 ...
- 3你应该记住的一个UTF-8字符「EF BF BD」 | 行思錄
所谓编码方案即讲字符集到码点(code point)的映射方式。 在众多的utf-8码点值中,除了ascii,你还应该记住「EF BF BD」,因为它是很多 ...
- 4Unicode/UTF-8-character table - starting from code position ...
code point, character, UTF-8 (hex.) name. U+FF00, , ef bc 80. U+FF01 ! ef bc 81, FULLWIDTH EXCLA...
- 5位元組順序記號 - 维基百科
位元組順序記號(英語:byte-order mark,BOM)是位於碼點 U+FEFF 的統一碼字符的名称。當以UTF-16 ... 它常被用來當做標示文件是以UTF-8、UTF-16或UTF-...