計算機只能處理數(shù)字,如果要處理文本,就必須先把文本轉(zhuǎn)換為數(shù)字才能處理。最早的計算機在設(shè)計時采用8個比特(bit)作為一個字節(jié)(byte),所以一個字節(jié)能表示的最大的整數(shù)就是255,如果要表示更大的整數(shù),就必須用更多的字節(jié)。比如,兩個字節(jié)可以表示的最大整數(shù)是65535,4個字節(jié)可以表示的最大整數(shù)是4294967295等。
ASCII編碼
計算機是美國人發(fā)明的,最早只有大小寫英文字母、數(shù)字和一些符號等127個字符被編碼到計算機里,這也即是我們知道的ASCII編碼(如下圖)。在ASCll編碼下,大寫字母A的編碼是65,小寫字母z的編碼是122,如下圖。
Unicode
從上文中我們知道,一個字節(jié)能表示的最大整數(shù)是255,但是《現(xiàn)代漢語常用字表》中有3500個漢字,因此,要處理中文顯然一個字節(jié)是不夠的,至少需要兩個字節(jié)。所以,中國就制定了GB2312編碼,用來把中文編進去。
你可以想得到的是,全世界有上百種語言,日本把日文編到Shift_JIS里,韓國把韓文編到Euc-kr里,各國有各國的標(biāo)準(zhǔn),就會不可避免地出現(xiàn)沖突,結(jié)果就是在多語言混合的文本中,顯示出來會有亂碼。
鑒于此,Unicode編碼應(yīng)運而生。Unicode的出現(xiàn)就是要把所有語言都統(tǒng)一到一套編碼里,以確保在多語言混合的文本中不會再有亂碼問題。
UTF-8
Unicode的出現(xiàn)解決了亂碼問題,但是也帶來了新問題。編碼長度是不可變的,說使用2個字節(jié)它一定會使用2個字節(jié)。這樣如果你寫的文本基本上都是英文的話,用Unicode編碼比ASCII編碼可能需要多一倍的存儲空間,這在存儲和傳輸上就十分不劃算。
所以本著節(jié)約的精神,科學(xué)家們有創(chuàng)造出了“可變長編碼”的UTF-8編碼。UTF-8編碼根據(jù)不同的數(shù)字大小把一個Unicode字符編碼成1-6個字節(jié),比如,常用的英文字母被編碼成1個字節(jié),漢字通常是3個字節(jié),只有很生僻的字符才會被編碼成4-6個字節(jié)。如果你要傳輸?shù)奈谋景罅坑⑽淖址肬TF-8編碼就能節(jié)省空間。
字符編碼的工作方式
1、在計算機內(nèi)存中,統(tǒng)一使用Unicode編碼,當(dāng)需要保存到硬盤或者需要傳輸?shù)臅r候,就轉(zhuǎn)換為UTF-8編碼。
2、用記事本編輯的時候,從文件讀取的UTF-8字符將被轉(zhuǎn)換為Unicode字符到內(nèi)存里,編輯完成后,保存的時候再把Unicode轉(zhuǎn)換為UTF-8保存到文件:
3、瀏覽網(wǎng)頁的時候,服務(wù)器會先把動態(tài)生成的Unicode內(nèi)容轉(zhuǎn)換為UTF-8,然后再傳輸?shù)綖g覽器
所以,你看到很多網(wǎng)頁的源碼上會有類似的信息,這就表示該網(wǎng)頁正是用的UTF-8編碼。
-
計算機
+關(guān)注
關(guān)注
19文章
7607瀏覽量
89790 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
9591瀏覽量
86948 -
ASCII
+關(guān)注
關(guān)注
5文章
172瀏覽量
35549
發(fā)布評論請先 登錄
相關(guān)推薦
怎么在MDB中將編碼設(shè)置為UTF-8
如何將文件編碼更改為UTF-8?
Unicode、UTF-8 和 ISO8859-1到底有什么區(qū)別
如何將UTF-8轉(zhuǎn)換為GBK編碼
RT-Thread Studio的GBK編碼版本如何改為UTF-8呢
請問如何在TouchGFX的TextArea通配符中顯示UTF-8文本?
UNICODE,GBK,UTF-8區(qū)別
ascii和utf8的區(qū)別_ASCII編碼與UTF-8的關(guān)系

從ASCII碼->Unicode-> UTF-8歷史變遷,及其差異
unicode如何轉(zhuǎn)GBK字庫制作
單片機中UTF-8如何轉(zhuǎn)換得到GBK編碼

"stm32單片機平臺上ASCII(GBK,GB2312)轉(zhuǎn)unicode轉(zhuǎn)UTF-8"

評論