Python2.x中文亂碼問(wèn)題解決方法
Python中亂碼問(wèn)題是一個(gè)很頭痛的問(wèn)題。
在Python3中,對(duì)中文進(jìn)行了全面的支持,但在Python2.x中需要進(jìn)行相關(guān)的設(shè)置才能使用中文。否則會(huì)出現(xiàn)亂碼
【問(wèn)題原因】
在Python2.x中主要是字符編碼的問(wèn)題,處理不好的話,會(huì)導(dǎo)致亂碼。Python默認(rèn)采取的ASCII編碼,字母、標(biāo)點(diǎn)和其他字符只使用一個(gè)字節(jié)來(lái)表示,但對(duì)于中文字符來(lái)說(shuō),一個(gè)字節(jié)滿足不了需求。
>>> import sys
>>> sys.getdefaultencoding()
'ascii'
為了能在計(jì)算機(jī)中表示所有的中文字符,中文編碼采用兩個(gè)字節(jié)表示。如果中文編碼和ASCII混合使用的話,就會(huì)導(dǎo)致解碼錯(cuò)誤,從而才生亂碼。而CMD下默認(rèn)的編碼方式為:GBK,所以就造成了上面的亂碼!
采用兩個(gè)字節(jié)的中文編碼標(biāo)準(zhǔn)有:GB2312、GBK、BIG5等。
【處理辦法】
為了將各種不同的語(yǔ)言包含在統(tǒng)一的字符集中,滿足國(guó)際間的信息交流,國(guó)際上制訂了UNICODE字符集,包含了世界上所有語(yǔ)言字符,這些字符具有唯一的編碼,通過(guò)使用UNICODE字符集可以滿足跨語(yǔ)言的文字處理,避免亂碼的產(chǎn)生。
i) 交互式命令中:一般不會(huì)出現(xiàn)亂碼,無(wú)需做處理
ii) py腳本文件中:跨字符集必須做設(shè)置,否則亂碼。
首先在開頭一句添加:
# coding = utf-8
# 或
# coding = UTF-8
# 或
# -*- coding: utf-8 -*-
其次需將文件保存為UTF-8的格式!
上面那一句僅僅是告訴Python編譯器:腳本中包含了非ASCII字符,并未進(jìn)行轉(zhuǎn)換。
如果要將字符編碼從默認(rèn)的ASCII改為UTF-8,需要在保存的時(shí)候選擇保存為UTF-8格式。
如果是用NODEPAD打開,【另存為】-->UTF-8即可
如果是用IDLE打開,【Options】-> 【Configure IDLE】->【General】
上面的設(shè)置,可以保證IDLE,運(yùn)行F5,能正常輸出中文。
【編碼解碼】
在開頭添加了# -*- coding: utf-8 -*-并將文件保存為UTF-8格式,仍然不能保證能輸出正常輸出中文,
不同的編輯器,如VIM,IDLE,Eclipse使用的輸出編碼都是不一致的。
所以,在一個(gè)地方能正常輸出中文,在另外一個(gè)地方就未必。所以還必須做編碼解碼設(shè)置!
encode:編碼
decode:解碼
必須保證編碼、解碼的對(duì)象是同一個(gè)。比如說(shuō)UTF-8方式編碼, 必須再用UTF-8進(jìn)行解碼即可。
所以最終解決辦法,還必須先按原先的方式解碼,再按控制臺(tái)格式重新編碼:比如CMD默認(rèn)是GBK方式
則必須使用如下方式:
正確輸出結(jié)果:
【其他說(shuō)明】
1.在Python3中,對(duì)中文的支持非常全面,源文件默認(rèn)保存為UTF-8的編碼,這樣一來(lái),不但可以在源代碼中使用中文,而且變量名也可以使用中文,比如說(shuō):
>>> 中國(guó) = 'Chinese'
>>> print(中國(guó))
Chinese
2.在Python3中,不需要來(lái)回的編解碼,并且字符串對(duì)象也沒(méi)有decode和encode方法。
相關(guān)文章
python自動(dòng)化UI工具發(fā)送QQ消息的實(shí)例
今天小編就為大家分享一篇python自動(dòng)化UI工具發(fā)送QQ消息的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08Python將圖片批量從png格式轉(zhuǎn)換至WebP格式
最近因?yàn)楣ぷ餍枰パ芯苛讼聀ng的壓縮,發(fā)現(xiàn)轉(zhuǎn)換成webp格式可以小很多,下面給大家分享利用Python將圖片批量從png格式轉(zhuǎn)換至WebP格式的方法,下面來(lái)一起看看。2016-08-08基于python3 OpenCV3實(shí)現(xiàn)靜態(tài)圖片人臉識(shí)別
這篇文章主要為大家詳細(xì)介紹了基于Python3 OpenCV3實(shí)現(xiàn)靜態(tài)圖片人臉識(shí)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05利用Python發(fā)送 10 萬(wàn)個(gè) http 請(qǐng)求
這篇文章主要介紹了如何利用Python發(fā)送 10 萬(wàn)個(gè) http 請(qǐng)求,下面我們講利用Python寫代碼實(shí)現(xiàn)10 萬(wàn)個(gè) url,對(duì)每個(gè) url 發(fā)送 http 請(qǐng)求,并打印請(qǐng)求結(jié)果的狀態(tài)碼,需要的朋友可以參考一下2021-12-12詳解Python 爬取13個(gè)旅游城市,告訴你五一大家最愛(ài)去哪玩?
這篇文章主要介紹了Python 爬取13個(gè)旅游城市,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05turtle的基礎(chǔ)使用之python?turtle遞歸繪圖
這篇文章主要介紹了turtle的基礎(chǔ)使用之python?turtle遞歸繪圖,turtle是一種比較簡(jiǎn)單的第三方庫(kù),下面借助遞歸繪圖詳細(xì)描述該內(nèi)容,具有一的的知識(shí)性參考價(jià)值,需要的朋友可以參考一下2022-02-02