python使用subprocess获取命令行输入后中文转码问题
python使用subprocess获取命令行输入后中文转码问题
字里行间 发表于3年前
python使用subprocess获取命令行输入后中文转码问题
  • 发表于 3年前
  • 阅读 62
  • 收藏 0
  • 点赞 0
  • 评论 0
摘要: 解决python使用subprocess获取命令行输入后中文转码问题

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命令返回的对象

共有 人打赏支持
粉丝 4
博文 2
码字总数 440
×
字里行间
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: