python2.X,代碼中指定了UTF-8,但是在cmd命令行窗口時,列印的中文仍然會亂碼。
在python3不存在該問題
運行結果:
原因
中文windows默認的輸出編碼為gbk ,與腳本中定義的UTF-8不一樣,所以出現了解碼失敗的情況。
相關推薦:《Python基礎教程》
解決方法
有如下兩種方法可以解決這個問題
方法一
我們可以通過先把中文解碼為unicode,然後再轉化為gbk來解決這個問題:
修改後運行結果:
方法二
當然,我們也可以通過改變cmd命令行窗口的輸出格式來解決這個問題:
·chcp 65001 就是換成UTF-8代碼頁
·chcp 936 可以換回默認的GBK
但是這樣就降低了腳本的兼容性,在其他環境運行的時候可能還會出現這樣的錯誤,而且可能會影響其他腳本運行,所以推薦使用第一種方法。
⑵ 命令行下中文顯示亂碼,怎麼解決
cmd命令行窗口顯示中文亂碼,多是因為cmd命令行窗口字元編碼不匹配導致。
修改cmd窗口字元編碼為UTF-8,命令行中執行:chcp 65001
切換回中文:chcp 936
這兩條命令只在當前窗口生效,重啟後恢復之前的編碼。
切換cmd窗口字元編碼有風險,例如切換過以後中文顯示亂碼,並且不能永久切換回原來模式,只能每次chcp 936。
cmd中文顯示亂碼永久解決方案,以切換回中文936為例:
打開不正常的 CMD命令提示符窗口後,單擊窗口左上角的圖標,選擇彈出的菜單中的「默認值」,切換到第一個「選項」tab,將默認的代碼頁改為 936 後重啟 CMD。重啟cmd後還不能正常顯示請繼續往下看。
如果重啟 CMD以後無法生效:窗口的「默認值」和「屬性」沒變,則進入注冊表,在 HKEY_CURRENT_USER\Console下找到%SystemRoot%_system32_cmd.exe(如果沒有codepage就不考慮了),codepage值改為 936(十進制)或 3a8(十六進制)。
936(十進制)是簡體中文的,如是其它語言,則改為對應的代碼。
部分字元編碼對應代碼:
65001——UTF-8
936——簡體中文
950——繁體中文
437——美國/加拿大英語
932——日文
949——韓文
866——俄文
最後一個亂碼原因:CMD 的「默認值」或「屬性」窗口的「字體」選項卡中設定為可以顯示中文字元的字體,並且確定字體文件沒有被破壞,字體最好設置為默認的點陣字體。