亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

淺談unicode編碼和utf-8編碼的關系

發布時間:2020-07-29 21:57:39 來源:網絡 閱讀:488 作者:pengdongcheng 欄目:編程語言

字符串編碼在Python里邊是經常會遇到的問題,特別是寫文件以及網絡傳輸的過程中,當調用某些函數的時候經常會遇到一些字符串編碼提示錯誤,所以有必要弄清楚這些編碼到底在搞什么鬼。


淺談unicode編碼和utf-8編碼的關系


我們都知道計算機只能處理數字,文本轉換為數字才能處理。計算機中8個bit作為一個字節,所以一個字節能表示最大的數字就是255。計算機是美國人發明的,而英文中涉及的編碼并不多,一個字節可以表示所有字符了,所以ASCII(American national Standard Code for Information Interchange,美國國家標準信息交換碼)編碼就成為美國人的標準編碼。但是我們都知道中文的字符肯定不止255個漢字,使用ASCII編碼來處理中文顯然是不夠的,所以中國制定了GB2312編碼,用兩個字節表示一個漢字,碰到及其特殊的情況,還會用三個字節來表示一個漢字。GB2312還把ASCII包含進去了。同理,日文,韓文等上百個國家為了解決這個問題發展了一套自己的編碼,于是乎標準越來越多,如果出現多種語言混合顯示就一定會出現亂碼。那么針對這種編碼“亂象”,Unicode便應運而生了,其將所有語言統一到一套編碼規則里。


淺談unicode編碼和utf-8編碼的關系


Unicode有許多種編碼,比如說可以通過16個bit或者32個bit來把所有語言統一到一套編碼里。舉個栗子,字母A用ASCII編碼的十進制為65,二進制為0100 0001;漢字“中”已經超出了ASCII編碼的范圍,用unicode編碼是20013,二進制是01001110 00101101;A用unicode編碼只需要前面補0,二進制是00000000 0100 0001。可以看出,unicode不僅解決了ASCII碼本身的編碼問題,還解決了超出ASCII編碼范圍之外的其他國家字符編碼的統一問題。


淺談unicode編碼和utf-8編碼的關系


雖然unicode編碼能做到將不同國家的字符進行統一,使得亂碼問題得以解決,但是如果內容全是英文unicode編碼比ASCII編碼需要多一倍的存儲空間,同時如果傳輸需要多一倍的傳輸。當傳輸文件比較小的時候,內存資源和網絡帶寬尚能承受,當文件傳輸達到上TB的時候,如果 “硬”傳,則需要消耗的資源就不可小覷了。為了解決這個問題,一種可變長的編碼“utf-8”就應運而生了,把英文變長1個字節,漢字3個字節,特別生僻的變成4-6個字節,如果傳輸大量的英文,utf8的作用就很明顯了。


淺談unicode編碼和utf-8編碼的關系


不過正是因為utf-8編碼的可變長,一會兒一個字符串是占用一個字節,一會兒一個字符串占用兩個字節,還有的占用三個及以上的字節,導致在內存中或者程序中變得不好琢磨。unicode編碼雖然占用內存空間,但是在編程過程中或者在內存處理的時候會比utf-8編碼更為簡單,因為它始終保持一樣的長度,一樣的長度對于內存和代碼來說,它的處理就會變得更加簡單。所以utf-8編碼在做網絡傳輸和文件保存的時候,將unicode編碼轉換成utf-8編碼,才能更好的發揮其作用;當從文件中讀取數據到內存中的時候,將utf-8編碼轉換為unicode編碼,亦為良策。


淺談unicode編碼和utf-8編碼的關系


如上圖所示,當需要在內存中讀取文件的時候,此時將utf-8編碼的內存轉換為unicode編碼,在內存中進行統一處理;當需要保存文件的時候,出于空間和傳輸效率的考慮,此時將unicode編碼轉換為utf-8編碼。在Python中進行讀取和保存文件的時候,必須要顯示的指定文件編碼,其余的事情就交給Python的相關庫去處理就可以了。

小伙伴們,了解了這些基礎知識之后,接下來對Python中的字符串編碼問題的理解就輕松的多了。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新丰县| 佳木斯市| 隆回县| 驻马店市| 天祝| 龙川县| 大港区| 南涧| 仁怀市| 醴陵市| 石柱| 宝丰县| 襄汾县| 剑阁县| 苏尼特左旗| 肥东县| 大方县| 巴彦淖尔市| 浪卡子县| 南通市| 贺州市| 盈江县| 曲松县| 静安区| 舞钢市| 成武县| 婺源县| 邵武市| 德清县| 枞阳县| 翁牛特旗| 遵化市| 中宁县| 铜梁县| 永城市| 建宁县| 怀宁县| 古浪县| 滕州市| 台东市| 武夷山市|