生活随笔
收集整理的這篇文章主要介紹了
编码 Unicode utf-8
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
編碼的發(fā)展史:
一開始計(jì)算機(jī)只在美國使用。8位的字節(jié)可以組合出256種不同的狀態(tài)。他們將0到32種狀態(tài)規(guī)定為”控制碼“,后來又用其中32號以后的狀態(tài)表示空格、標(biāo)點(diǎn)符號、數(shù)字和大小寫字母。這樣一直編到了127號狀態(tài)。這樣計(jì)算機(jī)就可以用不同字節(jié)來存儲英文的文字了。這種指定某個狀態(tài)為某個動作或者符號的過程稱為編碼。而以上的方案的編碼稱為ASNI的ASCII編碼(ASCII: American Standard Code for Information Interchange, 美國信息互換標(biāo)準(zhǔn)代碼)。當(dāng)時世界上所有的計(jì)算機(jī)都是用同樣的ASCII方案來保存英文字。 后來歐洲各地都開始使用計(jì)算機(jī),但是很多國家是英用的不文。于是各國人民決定用127號之后的空位來表示新的字母、符號。ASCII從127個擴(kuò)展到255個。至此,8位的字節(jié)所有狀態(tài)都用了,沒有新的狀態(tài)可以用了。 等到中國人們得到計(jì)算機(jī),已經(jīng)沒有可以利用的字節(jié)狀態(tài)來表示漢字了。更何況中國有6000多個常用漢字需要編碼。這個難不倒中國人。我們不客氣的將127號之后的奇葩符號直接取消掉,并且規(guī)定:一個小于127的字符的意義與原來相同,但兩個大于127的字符連在一起是,就表示一個漢字,前面一個字節(jié)(即高字節(jié))從0xA1用到0xF7,后面一個字節(jié)(低字節(jié))從0xA1到0xFE,這樣就可以組合出大約7000多個簡體漢字了。其中,還包括數(shù)學(xué)符號、羅馬希臘字母、日本的假名,在ASCII里本來就有的數(shù)字、標(biāo)點(diǎn)、字母都重新編了兩個字節(jié)長的編碼。兩個字節(jié)長的字符常稱為”全角“字符, 而原來127號以下的字符常稱為”半角“字符。這種ASCII的漢字?jǐn)U展方案叫做”GB2313“ 后來中國人還是覺得不夠,于是就干脆不要要求低字節(jié)一定是要大于127的內(nèi)碼。而規(guī)定只要高字節(jié)大于127,低字節(jié)可以取盡0-255. 結(jié)果又增加了近20000個新的漢字和符號。而這種編碼方案稱為”GBK“,它包含了”GB2312“的所有內(nèi)容。后來少數(shù)民族也用電腦了,于是我們再擴(kuò)展,GBK擴(kuò)成了GB18030. 中國自己擴(kuò)展了ASCII,其他國家也自己擴(kuò)展了ASCII。結(jié)果是相互之間誰也不懂誰的編碼,誰也不支持誰的編碼。這樣一旦中國要顯示印度的文字,就是一片亂碼。而且還有那些一時用不上電腦的窮苦人民,他們的文字怎么辦? 百亂之中, ISO(國際標(biāo)準(zhǔn)化組織)著手解決這個問題。他們的方法:廢了所有的地區(qū)性編碼方案,重新搞一個包括地球上所有文化、所有字母和符合的編碼。它叫”UNversal Multiple-Octet Coded Character Set“, 俗稱”UNICODE“。Unicode開始制訂時,計(jì)算機(jī)的存儲器容量已經(jīng)極大的發(fā)展了,空間再也不成問題。于是ISO就直接規(guī)定必須用兩個字節(jié)(16位)來統(tǒng)一表示所有字符。對于ASCII里的前127個字符,Unicode保持其編碼不變,只是在其前面加8個零,擴(kuò)展為16位。而其他文化的語言字符則全部重新統(tǒng)一編碼。 Unicode到來了,那么Unicode如何在網(wǎng)絡(luò)上傳輸就變成了一個必須解決的問題。于是面向傳輸?shù)谋姸鄻?biāo)準(zhǔn)出現(xiàn)了。其中一種叫做utf-8, 8是指每次傳輸8位數(shù)據(jù)。Unicode到utf-8的轉(zhuǎn)變的規(guī)則,下面來介紹。 Unicode向utf-8轉(zhuǎn)換的規(guī)則:
Unicode utf-8 0000 - 007F 0xxx xxxx ? 0080 - 07FF 110x xxxx 10xx xxxx 0800 - FFFF 1110 xxxx 10xx xxxx 10xx xxxx
?如上表舉例,”漢“字的Unicode編碼是6c49,在800-FFFF之間,寫成二進(jìn)制的話是:0110 1100 0100 1001. ?將這16位二進(jìn)制從左到右依次填入1110 xxxx 10xx xxxx 10xx xxxx 的x中, 得到:?1110-0110 10-11 0001 10-00 1001, 即E6 B1 89.?
?
轉(zhuǎn)載于:https://www.cnblogs.com/haoshine/p/5076901.html
總結(jié)
以上是生活随笔 為你收集整理的编码 Unicode utf-8 的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔 推薦給好友。