Python編碼問題

亂碼根源:

  • 本地內存中編碼方式都是“Unicode”,這是系統自動設定的!
  • 而在本地硬盤(保存到文件中)編碼方式,是要設定的,而且為了“最高性價比”,多要設定為utf-8;
  • 網絡中是各種各樣的編碼方式,拉取到本地,會自動“解釋”為Unicode,在控制臺輸出,這些都還是在內存中;
  • 即使以UTF-8編碼方式保存文件到本地,當讀取的時候,本地也只會把文件當做基本的編碼方式,如gbk,所以,仍然要編碼為UTF-8,再交給本地自動轉換為Unicode!

總結:

在計算機的世界,Unicode是“普通話”,其他的,像UTF-8、gbk什么的都是方言,而有的方言還解釋不成普通話(因為有的方言,如gbk,太有“地方特色”,一些“俚語”在普通話里不能“寫出來”,表達的含義,可意會不可言傳 ),所以計算機會“說錯話”,畢竟計算機還只是個機器,它只認普通話;同時,這個機器還蠻自動化的,會自動將方言轉換為普通話,而在一些“認不出來”的情況下,就直接報錯了,所以,如果出錯的時候將自己想要講的話轉換(編譯)為其它方言就行了,系統會再識別一次!


在Python中,有常用三套編碼方式:

  • ASCII:一個字節(byte),也就是8個比特(二進制八位),只能代表128個英文字符
  • Unicode:兩個字節(byte),及其特殊的會有三到四個,可以認為,這套編碼方式包含了這個世界所有的字符
  • UTF-8 :可變長字節,也就是說,如果一個字符用一個字節就能表示(如英文),就用一個;而必須用三個字節才能表示(如中文)就用兩個

三套編碼方案的優缺點:

  • ASCII
    優點:比較節約資源,只用一個字節
    缺點:能表示的字符只有英文,所以其他國家人民就不能“說話了”!
  • Unicode
    優點:包含了這個世界上所有的字符(基本可以這么認為),每個人都有“說話的權利”
    缺點:太浪費資源,無論高矮胖瘦,都能裝下,那這個“容器”就只能“將就”最高最胖的那個,所以“瘦子”就“節約”了好多空間 @_@
  • UTF-8
    優點:為每種語言“個性化定制”容器,性價比高,所以在網絡傳輸中常用UTF-8
    缺點:。。。。。。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 閱讀python源代碼的時候不難發現許多文件開頭都有這樣一行內容: 如果想在python中使用中文,這樣的一行聲明...
    Fengya閱讀 783評論 0 50
  • 幾個基本概念 bit二進制位, 是計算機內部數據儲存的最小單位,11010100是一個8位二進制數。一個二進制位只...
    西電大俠閱讀 3,600評論 1 8
  • 什么是編碼 任何一種語言、文字、符號等等,計算都是將其以一種類似字典的形式存起來的,比如最早的計算機系統將英文文字...
    隨風化作雨閱讀 1,577評論 1 2
  • 1.強化你的注意力。 注意力這個資源是比時間,比金錢,比其他任何身在之物都重要的一個資源。 2.為自己做事,而不是...
    得到一只貓閱讀 375評論 0 0
  • 說明: 字典和列表一樣,也能夠存儲多個數據 列表中找某個元素時,是根據下標進行的 字典中找某個元素時,是根據'名字...
    lynnyq閱讀 291評論 0 0