ASCII 8bit
- 格式: <0> 0000000 - <0> 1111110
- 區(qū)間: 0 ~ 126
- 特點(diǎn):第一位始終為0
Unicode
- 格式:嚴(yán) -> 4E25 -> 100111000100101
- 特點(diǎn):符號集合(一個(gè)符號唯一對應(yīng)一個(gè)數(shù)值大小) <一張通用數(shù)據(jù)表>
UTF-8 變 長編碼 -> Unicode的內(nèi)存實(shí)現(xiàn)方式'之一'
- 格式:<0xxxxxxxx> <110xxxxx 10xxxxxx> <1110xxxx 10xxxxxx 10xxxxxx> <11110xxx 10xxxxxx 10xxxxxx 10xxxxxx>
- 區(qū)間 0 ~ 126 5x + 6x 4x + 6x + 6x 3x + 6x + 6x + 6x 可以理解他們不包含,而是組成連續(xù), 對應(yīng)Unicode的字符表
- 特點(diǎn):特定的表示格式,能在存儲和網(wǎng)絡(luò)傳輸中正確區(qū)分字符,表示內(nèi)容
轉(zhuǎn)換
Unicode -> UTF-8
- 嚴(yán) -> 4E25 -> 100111000100101 (數(shù)值大小) <15個(gè)x>
- 大于11x,小于16x,三個(gè)字節(jié):1110xxxx 10xxxxxx 10xxxxxx
- 從后面將Unicode bit填入 UTF-8 1110x
1001011100010100101(x = 0)
ASCII -> UTF-8
- ! -> 21(16進(jìn)制,33十進(jìn)制) -> 00100001
- 小于等于7x,一個(gè)字節(jié):0xxxxxxx
填入bit 0x100001(x = 0)
補(bǔ)充:
- HTTP協(xié)議是以ASCII 碼傳輸<這個(gè)先記錄>(UTF-8的每一個(gè)字節(jié)就是一個(gè)ASCII)
- ?? JSON(Dic) -> Data -> [ASCII] (字節(jié)為單位)
- Unicode規(guī)范定義:Little endian 和 Big endian,如果一個(gè)文本文件的頭兩個(gè)字節(jié)是FE FF,就表示該文件采用大頭方式;如果頭兩個(gè)字節(jié)是FF FE,就表示該文件采用小頭方式,如果它出現(xiàn)在字節(jié)流的中間,則表達(dá)零寬度非換行空格的意義,用戶看起來就是一個(gè)空格
- UTF-8則沒有字節(jié)順序的議題
- UTF-16 UTF32卻有字節(jié)順序
-
如圖:維基百科-字節(jié)順序標(biāo)記.png