【python之路2】CMD中執行python程序中文顯示亂碼


在IDLE中執行下面代碼,中文顯示正常:

# -*- coding:utf-8 -*-

st=raw_input("請輸入內容")
print st

但在CMD中執行e:\hello.py,則中文會出現亂碼,是什么原因呢?

從下圖可以看出utf-8和gbk都可以通過編碼和解碼與unicode進行轉換,那么如果utf-8轉化為gbk該怎么辦呢?首先,utf-8通過解碼轉化為unicode,然后通過unicode編碼轉化為gbk

 

現在回答上面的問題,為什么CMD會出現亂碼呢?這是因為我們寫的py程序是utf-8編碼的,通過python程序編譯后,也是編譯為utf-8編碼,而這時cmd是通過gbk進行解析的,gbk解析utf-8,當然會出現亂碼了。

知道原因后,我們來看解決方案:

1、2.7中把程序中的漢字轉為gbk編碼:

# -*- coding:utf-8 -*-

concent = "請輸入內容:"
#將字符串由utf-8解碼為unicode
c_unicode = concent.decode("utf-8") 
#將解碼后的字符串編碼為gbk
c_gbk = c_unicode.encode("gbk")
st=raw_input(c_gbk)
print st

其實只需要把utf-8轉化為unicode編碼就可以,因為當windows的CMD遇到unicode編碼時,會自動給你轉化為gbk編碼,所以程序也可以這樣:

# -*- coding:utf-8 -*-

concent = "請輸入內容:"
#將字符串由utf-8解碼為unicode
c_unicode = concent.decode("utf-8") 
st=raw_input(c_unicode)
print st

 另外python3x中沒有unicode類型,但可以支持從utf-8直接解碼轉換為gbk,代碼如下:

# -*- coding:utf-8 -*-

concent = "請輸入內容:"
#將字符串由utf-8解碼為gbk
c_gbk = concent.decode("gbk") 
st=raw_input(gbk)
print(st)

2、將CMD終端改為UTF-8格式

命令介紹:

chcp 65001   #換成utf-8代碼頁 

chcp 936       #換成默認的gbk 
chcp 437       #美國英語 
一般默認為gbk,若要修改成 utf-8,則需要: 
1)、cmd窗口輸入: 
chcp 65001 
2)、修改cmd屬性: 
選擇字體為“Lucida Console”
 
3、改為UTF-8后可能出現字符重疊或不能輸入中文的現象,調整回GBK格式的方法
  1. 右擊cmd窗口,點默認值

    選項默認代碼頁,選擇936

    cmd 無法輸入中文,顯示中文亂碼 最終解決方案
    cmd 無法輸入中文,顯示中文亂碼 最終解決方案
  2.  在 cmd中輸入:

    chcp 936

     

    注:chcp命令用於顯示或設置活動代碼頁編號。

    cmd 無法輸入中文,顯示中文亂碼 最終解決方案
  3.  新建文本,復制粘貼以下代碼,把文件類型改成 reg :Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe] "CodePage"=dword:000003a8

     

    之后雙擊運行。點是。

    cmd 無法輸入中文,顯示中文亂碼 最終解決方案
    cmd 無法輸入中文,顯示中文亂碼 最終解決方案
  4.  運行 regedit,打開注冊表。

    HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe中找到CodePage

    雙擊打開CodePage,輸入3a8

    cmd 無法輸入中文,顯示中文亂碼 最終解決方案
    cmd 無法輸入中文,顯示中文亂碼 最終解決方案


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM