Python2.x中文亂碼問題解決方案

來源:互聯網
上載者:User

Python2.x中文亂碼問題解決方案

   這篇文章主要介紹了Python2.x中文亂碼問題解決方案,本文解釋問題原因、給出了處理辦法並講解了編碼解碼的一些知識,需要的朋友可以參考下

  Python中亂碼問題是一個很頭痛的問題。

  在Python3中,對中文進行了全面的支援,但在Python2.x中需要進行相關的設定才能使用中文。否則會出現亂碼

  【問題原因】

  在Python2.x中主要是字元編碼的問題,處理不好的話,會導致亂碼。Python預設採取的ASCII編碼,字母、標點和其他字元只使用一個位元組來表示,但對於中文字元來說,一個位元組滿足不了需求。

  代碼如下:

  >>> import sys

  >>> sys.getdefaultencoding()

  'ascii'

  為了能在電腦中表示所有的中文字元,中文編碼採用兩個位元組表示。如果中文編碼和ASCII混合使用的話,就會導致解碼錯誤,從而才生亂碼。而CMD下預設的編碼方式為:GBK,所以就造成了上面的亂碼!

  採用兩個位元組的中文編碼通訊協定有:GB2312、GBK、BIG5等。

  【處理辦法】

  為了將各種不同的語言套件含在統一的字元集中,滿足國際間的資訊交流,國際上制訂了UNICODE字元集,包含了世界上所有語言字元,這些字元具有唯一的編碼,通過使用UNICODE字元集可以滿足跨語言的文文書處理,避免亂碼的產生。

  i) 互動式命令中:一般不會出現亂碼,無需做處理

  ii) py指令檔中:跨字元集必須做設定,否則亂碼。

  首先在開頭一句添加:

  代碼如下:

  # coding = utf-8

  # 或

  # coding = UTF-8

  # 或

  # -*- coding: utf-8 -*-

  其次需將檔案儲存為UTF-8的格式!

  上面那一句僅僅是告訴Python編譯器:指令碼中包含了非ASCII字元,並未進行轉換。

  如果要將字元編碼從預設的ASCII改為UTF-8,需要在儲存的時候選擇儲存為UTF-8格式。

  如果是用NODEPAD開啟,【另存新檔】-->UTF-8即可

  如果是用IDLE開啟,【Options】-> 【Configure IDLE】->【General】

  上面的設定,可以保證IDLE,運行F5,能正常輸出中文。

  【編碼解碼】

  在開頭添加了# -*- coding: utf-8 -*-並將檔案儲存為UTF-8格式,仍然不能保證能輸出正常輸出中文,

  不同的編輯器,如VIM,IDLE,Eclipse使用的輸出編碼都是不一致的。

  所以,在一個地方能正常輸出中文,在另外一個地方就未必。所以還必須做編碼解碼設定!

  encode:編碼

  decode:解碼

  必須保證編碼、解碼的對象是同一個。比如說UTF-8方式編碼, 必須再用UTF-8進行解碼即可。

  所以最終解決辦法,還必須先按原先的方式解碼,再按控制台格式重新編碼:比如CMD預設是GBK方式

  則必須使用如下方式:

  正確輸出結果:

  【其他說明】

  1.在Python3中,對中文的支援非常全面,源檔案預設儲存為UTF-8的編碼,這樣一來,不但可以在原始碼中使用中文,而且變數名也可以使用中文,比如說:

  代碼如下:

  >>> 中國 = 'Chinese'

  >>> print(中國)

  Chinese

  2.在Python3中,不需要來回的編解碼,並且字串對象也沒有decode和encode方法。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.