python中带UTF8的Antiword

2024-05-27 11:17:55 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的代码:

from subprocess import Popen, PIPE
cmd = ['antiword', 'tbhocbong151.doc']
p = Popen(cmd, stdout=PIPE)
stdout, stderr = p.communicate()
print(stdout.decode('utf-8', 'ignore'))

我在文件word中有这样的内容:"Chào bạn"

但当我生成的输出是:"Ch?o b?n"

我怎样才能像输入一样把它固定到输出? 谢谢你的帮助


Tags: 代码fromimportcmddocstderrstdoutch
2条回答

我认为问题是在antiword运行时没有正确设置语言环境。试试这个:

import os
from subprocess import Popen, PIPE
myenv = dict(os.environ)
if 'LC_ALL' in myenv:
    del myenv['LC_ALL']
myenv['LANG'] = 'en_US.UTF-8'
cmd = ['antiword', 'tbhocbong151.doc']
p = Popen(cmd, stdout=PIPE, env=myenv)
stdout, stderr = p.communicate()
print(stdout.decode('utf-8', 'ignore'))

如果不起作用,请在运行python程序之前尝试在shell中设置LANGenv变量;例如,通过执行以下操作:

^{pr2}$

相关问题 更多 >

    热门问题