Python在WIN下CMD運行中文亂碼及python 2.x python 3.x編碼問題


python 2.x

以下為python 2.x版本
在CMD中運行python代碼時,我們會發現,即使在代碼中加入# -*- coding:utf-8 -*- 這段代碼,中文仍然會亂碼。如下:
# -*- coding:utf-8 -*-
content = "我是中文"
print content


結果:


網上搜索的方法中說,把CMD的編碼格式改為UTF-8格式,命令介紹:

chcp 65001       #转换为utf-8代码页
chcp 936           #转换为默认的gbk

一般CMD默認gbk,在CMD窗口中輸入chcp 65001 修改為utf-8


在運行看看:

很遺憾,還是亂碼,這樣的話,只能從代碼入手了,因為CMD默認gbk編碼,所以只能把代碼中的中文進行gbk編碼了。
utf-8通過解碼轉化為unicode,然後將unicode編碼轉化為gbk
代碼:
# -*- coding:utf-8 -*-
content = "我是中文"
content_unicode = content.decode("utf-8")
content_gbk = content_unicode.encode("gbk")
print content_gbk

python3.x

python3.x中在CMD中中文輸出不會亂碼。

python2.x和python3.x產生差別的原因:

主要是二者對於字符串的編碼不同
python 2.x:

python 2.x的字符串是有編碼的,默認為ascii,但如果在其中寫中文的話,解釋器一般會報錯,所以都在代碼第一行或者第二行規定編碼格式:
# -*- coding:utf-8 -*-
想要轉換為其他編碼,就要進行先解碼為unicode再編碼的過程。
python 3.x

python 3.x的字符串類似python 2.x的unicode,是沒有經過編碼的,因此python 3.x的字符串沒有decode屬性,只有encode屬性,調用這個方法後將產生bytes類型的字符串(有點像python 2.x中的字符串),而bytes類型支持解碼操作。

不含病毒。www.avast.com

留言

這個網誌中的熱門文章

將 install.esd 轉換成 install.wim

win7-記事本存檔預設值改為UTF-8、Unicode格式

winXP-修改XP開機選單