python使用subprocess模塊可以方便的運行系統命令,並獲取輸入,但是當輸出的內容中存在中文時返回的數據就是進行過編碼后的,無法正常顯示,因此要對其進行一下轉碼,過程如下:
首先,應該知道命令行使用哪種編碼顯示輸出結果,在命令行中運行 chcp 命令來獲取活動頁代碼,如:"活動頁代碼:936"
MS-DOS為以下國家和語言提供字符集:
代碼頁描述
1258 越南語
1257 波羅的語
1256 阿拉伯語
1255 希伯來語
1254 土耳其語
1253 希臘語
1252 拉丁 1 字符 (ANSI)
1251 西里爾語
1250 中歐語言
950 繁體中文
949 朝鮮語
936 簡體中文(默認) GBK
932 日語
874 泰國語
850 多語種 (MS-DOS Latin1)
437 MS-DOS 美國英語
65001 UTF-8
然后在PY內對獲取到的結果進行相應轉碼即可
例如我的活動代碼頁為936,即GBK編碼
那么應該就應該這樣寫:
String = str(Output.stdout.readline(),encoding='gbk')
Output為subprocess.Popen命令返回的對象