由於網絡中大部分的字符是ASCII碼字符,UTF-8能夠用一個字節表示ASCII字符,相較於UTF-16和UTF-32的兩個字節或者四個字節,大幅節省了空間和傳輸帶寬.網絡
幾個UTF-8的編碼例子 (由該網頁工具轉換 https://sites.google.com/site/nathanlexwww/tools/utf8-convert )工具
字符 UTF-8編碼 Byte 1 Byte 2 Byte 3google
A 01000001 編碼
Ö 11000011 10010110 spa
中 11100100 10111000 10101101.net
Note: Byte 1 中開頭"1"的個數就是整個 UTF-8編碼中字節的數目(只適用於長度大於等於兩個字節的UTF編碼,表示ASCII編碼的UTF首字節的首位是0)code
#如下內容部分來自wiki,部分來自stackoverflow.orm
UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字符編碼,也是一種前綴碼。它能夠用來表示Unicode標準中的任何字符,且其編碼中的第一個字節仍與ASCII兼容,這使得原來處理ASCII字符的軟件無須或只須作少部分修改,便可繼續使用。所以,它逐漸成爲電子郵件、網頁及其餘存儲或發送文字的應用中,優先採用的編碼。blog
UTF-8使用一至六個字節爲每一個字符編碼(儘管如此,2003年11月UTF-8被RFC 3629從新規範,只能使用原來Unicode定義的區域,U+0000到U+10FFFF,也就是說最多四個字節):ip
Binary Hex Comments
0xxxxxxx 0x00..0x7F Only byte of a 1-byte character encoding
10xxxxxx 0x80..0xBF Continuation bytes (1-3 continuation bytes)
110xxxxx 0xC0..0xDF First byte of a 2-byte character encoding
1110xxxx 0xE0..0xEF First byte of a 3-byte character encoding
11110xxx 0xF0..0xF7 First byte of a 4-byte character encoding
對於UTF-8編碼中的任意字節X,若是X的第一位爲0,則X獨立的表示一個字符(ASCII碼)
若是X的第一位爲1,第二位爲0,則X爲一個多字節字符中的後續字節(非第一字節)
若是X的前兩位爲1,第三位爲0,則X爲兩個字節表示的字符中的第一個字節
若是X的前三位爲1,第四位爲0,則X爲三個字節表示的字符中的第一個字節
若是X的前四位爲1,第五位爲0,則X爲四個字節表示的字符中的第一個字節
碼點的位數 | 碼點起值 | 碼點終值 | 字節序列 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 |
---|---|---|---|---|---|---|---|---|---|
7 | U+0000 | U+007F | 1 | 0xxxxxxx |
|||||
11 | U+0080 | U+07FF | 2 | 110xxxxx |
10xxxxxx |
||||
16 | U+0800 | U+FFFF | 3 | 1110xxxx |
10xxxxxx |
10xxxxxx |
|||
21 | U+10000 | U+1FFFFF | 4 | 11110xxx |
10xxxxxx |
10xxxxxx |
10xxxxxx |
||
26 | U+200000 | U+3FFFFFF | 5 | 111110xx |
10xxxxxx |
10xxxxxx |
10xxxxxx |
10xxxxxx |
|
31 | U+4000000 | U+7FFFFFFF | 6 | 1111110x |
10xxxxxx |
10xxxxxx |
10xxxxxx |
10xxxxxx |
10xxxxxx |
Some useful links:
http://www.unicode.org/Public/9.0.0/ucd/UnicodeData.txt
http://www.utf8-chartable.de/unicode-utf8-table.pl?utf8=bin
##博客僅做我的記錄##