>>importsys>>>sys.getdefaultencoding()'a" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python2.x中文亂碼問(wèn)題解決方法

系統(tǒng) 1881 0

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é)滿足不了需求。

復(fù)制代碼 代碼如下:

>>> import sys?
>>> sys.getdefaultencoding()?
'ascii'?

為了能在計(jì)算機(jī)中表示所有的中文字符,中文編碼采用兩個(gè)字節(jié)表示。如果中文編碼和ASCII混合使用的話,就會(huì)導(dǎo)致解碼錯(cuò)誤,從而才生亂碼。而CMD下默認(rèn)的編碼方式為:GBK,所以就造成了上面的亂碼!

Python2.x中文亂碼問(wèn)題解決方法_第1張圖片

采用兩個(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ú)需做處理

Python2.x中文亂碼問(wèn)題解決方法_第2張圖片

ii) py腳本文件中:跨字符集必須做設(shè)置,否則亂碼。
首先在開(kāi)頭一句添加:

復(fù)制代碼 代碼如下:

# 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打開(kāi),【另存為】-->UTF-8即可

Python2.x中文亂碼問(wèn)題解決方法_第3張圖片

如果是用IDLE打開(kāi),【Options】-> 【Configure IDLE】->【General】

Python2.x中文亂碼問(wèn)題解決方法_第4張圖片

上面的設(shè)置,可以保證IDLE,運(yùn)行F5,能正常輸出中文。

【編碼解碼】

在開(kāi)頭添加了# -*- 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方式
則必須使用如下方式:

Python2.x中文亂碼問(wèn)題解決方法_第5張圖片

正確輸出結(jié)果:

【其他說(shuō)明】
1.在Python3中,對(duì)中文的支持非常全面,源文件默認(rèn)保存為UTF-8的編碼,這樣一來(lái),不但可以在源代碼中使用中文,而且變量名也可以使用中文,比如說(shuō):

復(fù)制代碼 代碼如下:

>>> 中國(guó) = 'Chinese'?
>>> print(中國(guó))?
Chinese?

2.在Python3中,不需要來(lái)回的編解碼,并且字符串對(duì)象也沒(méi)有decode和encode方法。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 丰台区| 德阳市| 上高县| 长沙县| 沛县| 武川县| 武夷山市| 敦煌市| 民乐县| 新源县| 鲁甸县| 阿瓦提县| 杂多县| 合山市| 遂川县| 乌海市| 崇信县| 巴林左旗| 滦南县| 辰溪县| 沭阳县| 禄丰县| 河津市| 金川县| 宜兰市| 浮山县| 泽州县| 进贤县| 诏安县| 贵德县| 八宿县| 定兴县| 宝应县| 固始县| 云浮市| 岳阳市| 尤溪县| 泗洪县| 莎车县| 班戈县| 睢宁县|