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