Python2 x中文亂碼問題

2021-06-28 19:16:49 字數 2257 閱讀 1668

python中亂碼問題是乙個很頭痛的問題。

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

問題原因

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

>>> import sys

>>> sys.getdefaultencoding()

'ascii'

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

採用兩個位元組的中文編碼標準有:gb2312、gbk、big5等。

處理辦法

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

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

# 或# coding = utf-8

# 或# -*- coding: 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方法。

Python2 x 中文亂碼問題

python 檔案中如果未指定編碼,在執行過程會出現報錯 usr bin pythonprint 你好,世界 以上程式執行輸出結果為 file test.py line 2syntaxerror non ascii character xe4 in file test.py on line 2,bu...

Python2 x版本中基本的中文編碼問題解決

python 輸出 hello,world 英文沒有問題,但是如果你輸出中文字元 你好,www.cppcns.com世界 就有可能會碰到中文編碼問題。python 檔案中如果未指定編碼程式設計客棧,在執行過程會出現報錯 usr bin python print 你好,世界 以上程式執行輸出結果為 f...

Python2 X輸入函式

mystr raw input 請輸入指令 import os os.system mystr 執行結果 ps input返回的是數值型別,如int,float raw inpout返回的是 字串型別 string型別 若輸入是表示式,則input會計算出表示式的值,而raw input會原樣輸出 ...