下面對這個圖進行一下說明:
第一個紅框中的內容是我從unicode.org提供的GB2312->Unicode碼表中隨便抽取的一行,下面以它為例進行說明。
這里面列出的GB2312和我們計算機實際使用的GB2312是不一樣的。因為GB2312的和ASCII的編碼范圍有沖突,所以使用時都采用兩個字節高位置1的方式,也就是下面我列出的那個EUC才是在計算機內存儲形式的GB2312。原來這是一個“暗”字。
前者和”區位碼”是有直接關系的,”暗”的區位碼1621,轉換成HEX: 0×1015,只要把高低位都+0×20,就得到了GB2312: 0×3035。
下面再看看UNICODE,大家可以做一個實驗,把0×6697轉成DEC: 26263,建一個空白HTML檔(encoding隨意),在里面寫上 暗 怎么樣,就能看到這個字了吧:)
把它轉成BIN: 0110 0110 1001 0111, 查UTF-8的轉換表,這個字的Unicode: U+6679 在 U+0800 和 U+FFFF 之間,是要轉換成三字節的UTF-8的,轉換方法如上面所示,最后得出的UTF-8編碼就是: 0xE69A97。
UTF-8 and Unicode FAQ (英文版)
UTF-8 and Unicode FAQ (中文版,不過比較老,還是2000年的:( )
UTF-8字符各字節含義

0×00-0×7F
同ASCII,也不可能作為任何其他多字節UTF-8字符的一部分

0xC0-0xDF
多字節UTF-8字符的開始字節,而且據此可以判斷出該UTF-8字符的長度(字節數)

0×80-0xBF
多字節UTF-8字符的跟隨字節

0xFE-0xFF
UTF-8未使用

那么如何判斷UTF-8字符的長度呢?

0×00-0×7F
1字節

0xC0-0xDF
2字節

0xE0-0xEF
3字節

0xF0-0xF7
4字節

0xF8-0xFB
5字節

0xFC-0xFD
6字節

UTF-8字符范圍

Unicode
字節數
表示方法
字節范圍

U-00000000 - U-0000007F
1
0xxxxxxx
(0×00-0×7F)

U-00000080 - U-000007FF
2
110xxxxx 10xxxxxx
(0xC2-0xDF)(0×80-0xBF)

U-00000800 - U-0000FFFF
3
1110xxxx 10xxxxxx 10xxxxxx
0xE0(0xA0-0xBF)(0×80-0xBF)(0xE1-0xEF)(0×80-0xBF)(0×80-0xBF)

U-00010000 - U-001FFFFF
4
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
0xF0(0×90-0xBF)(0×80-0xBF)(0×80-0xBF)(0xF1-0xF7)(0×80-0xBF)(0×80-0xBF)(0×80-0xBF)

U-00200000 - U-03FFFFFF
5
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

U-04000000 - U-7FFFFFFF
6
1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx