首頁 > 後端開發 > Python教學 > Python2.7 在windows指令視窗 輸出中文亂碼

Python2.7 在windows指令視窗 輸出中文亂碼

巴扎黑
發布: 2017-06-23 16:01:19
原創
3261 人瀏覽過

本文實例講述了在windows指令視窗下執行Python檔產生亂碼的問題, 供大家參考:
Ps: 如有錯誤還請指正, 歡迎交流學習

# -*- coding:utf-8 -*-str = "彦雪"print str
登入後複製

執行後, 輸出結果如下:

褰﹂洩
登入後複製

亂碼結果和大家可能不同, 不過也都是亂碼啦!!

##問題分析

Python2 預設編碼為"ascii", ascii編碼不包含中文字元

如果在其中有中文字元的話, Python解釋器一般會報錯.
但如果指定了以UTF-8 編碼, Python就不再報錯.
"# -
- coding:utf-8 --" 是指定Python原始碼以UTF-8 編碼。

window預設編碼為gbk編碼,所以str輸出前必須編碼為gbk。

由於Python中不允許直接將utf-8 轉為gbk, 因此需要先將utf-8 轉為unicode 再轉為gbk

深度分析

這種方法有一種弊端就是當我們在跨平台的時候就會出現問題, 因此Python 為我們提供了一個方便的解決方案使用unicode 作為輸出-- 此方法不適用於raw_input

當需要打印輸出時,Python 會先調取字元輸出程式(命令列或輸出函數)的編碼格式,然後將該字串編碼成字元輸出程式所用的編碼(這樣字元輸出程式就不會因為認不出編碼而出現亂碼),接著字元輸出程式將編碼後的字元輸出到目的地。

解決方法

# 方法一  中文前加u, 告诉Python解释器后面的是个unicode编码str = u"彦雪"
登入後複製
# 方法二  str.decode('utf-8') 以utf-8编码对字符串 str 进行解码, 获取unicodestr = "彦雪".decode('utf-8')
登入後複製
# 方法三  unicode(str, 'utf-8') 将字符串 str 以utf-8编码解码, 获取unicodestr = unicode('彦雪','utf-8')
登入後複製
在windows指令視窗raw_input 顯示亂碼

使用raw_input 需要將中文轉換為系統編碼, 方法如下列所示

# 方法1  str.encode("gbk") 将unicode转为gbk 编码content = raw_input(u"输入内容: ".encode("gbk"))
登入後複製
# 方法2content = raw_input("输入内容: ".decode('utf-8').encode("gbk"))
登入後複製
# 方法3content = raw_input(unicode('输入内容: ','utf-8').encode("gbk"))
登入後複製
##雖然這種寫法很方便, 但是跨平台效果較差, 個人不推薦這種寫法, 建議中文字符和raw_input 分開寫. 通過其他手段達到在同一行的目的

#擴展閱讀


################## #Python的編碼註解# -###- coding:utf-8 -###-#######PEP 263 -- Defining Python Source Code Encodings######關於Python的編碼、亂碼以及Unicode的一些研究######raw_input輸入、檔案讀取、變數比較等str、unicode、utf-8轉換問題######探索######目前離職, 在等待的過程中,分享下以前常遇到的問題和大家探討, 希望對大家有所幫助, 歡迎指正###在分享知識中尋找自我,享受編程之樂###

以上是Python2.7 在windows指令視窗 輸出中文亂碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板