您好,登錄后才能下訂單哦!
這篇文章主要介紹了Python中unicode和utf8是什么,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
在很久很久以前,美國(guó)人發(fā)明了計(jì)算機(jī),計(jì)算機(jī)只能處理數(shù)字也就是把文字轉(zhuǎn)換為8個(gè)bit也就是一個(gè)字節(jié),8個(gè)bit最大能表示的數(shù)字為255,而[A-Z]、[a-z]、[0-9]再加上鍵盤(pán)上的一些符號(hào)正好255個(gè),所以ASCII編碼就成為了美國(guó)人的標(biāo)準(zhǔn)編碼(用一個(gè)字節(jié)代表一個(gè)字母或者符號(hào)),正好也滿(mǎn)足了美國(guó)人的需求。
有了上面的情況,我大中國(guó)表示不服,我們中國(guó)漢字博大精深,255個(gè)明顯是滿(mǎn)足不了我們的需求的,于是我們就發(fā)明了GB2312編碼(用兩個(gè)字節(jié)表示漢字),不僅包含了ASCII碼還能表示我們的中國(guó)的漢字,于是有了我們中國(guó)的例子,世界各國(guó)紛紛研究出了支持自己語(yǔ)言的編碼,在這種情況下多種語(yǔ)言混合顯示就出現(xiàn)了亂碼的情況了,對(duì)于這種情況就出現(xiàn)了unicode編碼將所有語(yǔ)言統(tǒng)一到一起。
unicode編碼的出現(xiàn)解決了多國(guó)語(yǔ)言展示亂碼的問(wèn)題,但是unicode的解決方案在全英文文檔展示的情況下,unicode編碼會(huì)比ASCII編碼多一倍的存儲(chǔ)空間(unicode的編碼是16bit的,在表示ASCII編碼時(shí)是直接在前面加上8個(gè)0)相應(yīng)的在傳輸?shù)臅r(shí)候就多了一倍的傳輸時(shí)間,在這種情況下就出現(xiàn)了UTF8編碼。
UTF8編碼相比于8bit的ASCII編碼和16bit的unicode編碼來(lái)說(shuō),UTF8編碼是不定長(zhǎng)的,它可以使用兩個(gè)字節(jié)代表英文,用三個(gè)字節(jié)代表中文,UTF8這個(gè)時(shí)候優(yōu)勢(shì)就很大了,在實(shí)際運(yùn)用中,我們可以將文件編碼互相轉(zhuǎn)換以獲取最大化的利用內(nèi)存,把文件保存在內(nèi)存中我們采用內(nèi)存占用更小的UTF8編碼的格式,讀寫(xiě)文件時(shí)我們采用更大更全的unicode編碼,具體實(shí)例圖如下:
s.decode("gb2312").encode("utf-8")
。
按照上面解讀,我們?cè)贚inux系統(tǒng)下操作如下:
Python2.7和Python3.6最大的區(qū)別就是在執(zhí)行Python2.7項(xiàng)目時(shí),當(dāng)項(xiàng)目中包含漢字時(shí),需要在文件頭聲明編碼格式,否則項(xiàng)目中的中文顯示就是亂碼。
而在Python3中完全沒(méi)有這樣的顧慮,那是因?yàn)槟J(rèn)python3中全部的字符串就是unicode可以直接使用encode方法。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Python中unicode和utf8是什么”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。