[以下只是個(gè)人的總結(jié),如若有誤,懇請(qǐng)指正,謝謝!]
下列字節(jié)串用來(lái)表示一個(gè)字符. 用到哪個(gè)串取決于該字符在 Unicode 中的序號(hào).
U+00000000 - U+0000007F: |
0 xxxxxxx |
0x - 7x |
|
U+00000080 - U+000007FF: |
110 xxxxx 10 xxxxxx |
Cx 8x - Dx Bx |
|
U+00000800 - U+0000FFFF: |
1110 xxxx 10 xxxxxx 10 xxxxxx |
Ex 8x 8x - Ex Bx Bx |
|
U+00010000 - U+001FFFFF: |
11110 xxx 10 xxxxxx 10 xxxxxx 10 xxxxxx |
F0 8x 8x 8x - F7 Bx Bx Bx |
很少用 |
U+00200000 - U+03FFFFFF: |
111110 xx 10 xxxxxx 10 xxxxxx 10 xxxxxx 10 xxxxxx |
F8 8x 8x 8x 8x - FB Bx Bx Bx Bx |
U+04000000 - U+7FFFFFFF: |
1111110 x 10 xxxxxx 10 xxxxxx 10 xxxxxx 10 xxxxxx 10 xxxxxx |
FC 8x 8x 8x 8x 8x - FD Bx Bx Bx Bx Bx |
* FE FF從未在編碼中出現(xiàn)過(guò).
* 除第一個(gè)字節(jié)外,其余字節(jié)都在
0x80 到 0xBF范圍內(nèi),每個(gè)字符的起始位置用0xC0-0xD0,0xE0,0xF0等可以確定(驗(yàn)證前四位或八位),不在這一范圍的即為單字節(jié)字符.凡是以0x80 到 0xBF開(kāi)頭的都是后繼字節(jié),計(jì)數(shù)時(shí)都要跳過(guò).
* Unicode是一種編碼表,只將字符指定給某一數(shù)字(Unicode做得還要更多一些,比如提供比較及顯示等很多算法等等);
而UTF-8是編碼方式,是定義如何表示并存儲(chǔ)指定編碼的格式.
* UTF-8編碼轉(zhuǎn)換為Unicode編碼: 將所有標(biāo)志位去除,剩余位數(shù)若不足則在高位補(bǔ)零,湊足32位即可.
* Unicode編碼轉(zhuǎn)換為UTF-8編碼: 從低位開(kāi)始,每取6位補(bǔ)兩個(gè)位10,不足6位(不算高位的0)則按字節(jié)長(zhǎng)度補(bǔ)相應(yīng)的字符標(biāo)志位0、110、1110等