UTF-8 編碼字符理論上可以最多到 6個字節長,但目前全世界的所
有文字和符號種類加起來也只要編到 4個字節長就夠了。
UTF-8 是以 8位(即 1個字節)爲單元對原始碼進行編碼(注意一
點:這裏所講的原始碼都是指Unicode碼),並規定:多字節碼(2個字
節以上才稱爲多字節)以轉換後第1個字節起頭的連續“1”的數目(這
些連續“1”稱爲標記位),表示轉換成幾個字節:“110”連續兩個
“1”,表示轉換結果爲2個字節,“1110”表示3個字節,而“11110”
則表示4個字節……跟隨在標記位之後的“0”,其作用是分隔標記位和
字符碼位。第2~第4個字節的起頭兩個位固定設置爲“10”,也作爲標
記,剩下的6個位才做爲字符碼位使用。
這樣,2字節UTF-8碼剩下11個字符碼位,可用以轉換0080~07FF的
原始字符碼,3字節剩下16個字符碼位,可用以轉換0800~FFFF的原始字
符碼,由此類推。編碼方式的模板如下:
原始碼(16進制) UTF-8編碼(二進制)
--------------------------------------------
0000 - 007F 0xxxxxxx
0080 - 07FF 110xxxxx 10xxxxxx
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx
……
--------------------------------------------
模板中的“x”表示字符碼。
Ascii碼<007F,編爲1個
字節的UTF-8碼。漢字的 Unicode編碼範圍爲0800-FFFF,所以被編爲
3個字節的UTF-8碼。
例如“漢”字的Unicode編碼是6C49,6C49在0800-FFFF之間,所以
要用3個字節的模板:1110wwww 10xxxxyy 10yyzzzz。
6 C 4 9
0110 1100 0100 1001
wwww xxxx yyyy zzzz
wwww xxxxyy yyzzzz
1110wwww 10xxxxyy 10yyzzzz。
11100110 10110001 10001001
E 6 B 1 8 9
“漢”字的UTF-8編碼是E6 B1 89