使用 python 调用 antiword 将 doc 转换成 txt,发现返回值是乱码,powershell 上用 antiword 也是乱码,在 git bash 上调用就没问题
环境:windows 平台,py3.6 尝试过改 locale,还试过 antiword 的-m 参数,但是没什么用
pipe = subprocess.Popen(
['antiword', filename],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE )
stdout, stderr = pipe.communicate()
return stdout
1
newghost 2018-11-03 19:54:21 +08:00
pdf2text
|
2
lihongjie0209 2018-11-03 20:16:32 +08:00
每一个进程执行的都有上下文的, 比如说环境变量, 你在 Python 中把环境变量打出来看看编码的配置项
|
3
CppOrJava OP @lihongjie0209 我试过改 locale,没有用
代码: locale.setlocale(locale.LC_ALL, 'zh_CN.UTF-8') locale.setlocale(locale.LC_COLLATE,'zh_CN.UTF-8') locale.setlocale(locale.LC_CTYPE,'zh_CN.UTF-8') locale.setlocale(locale.LC_NUMERIC,'zh_CN.UTF-8') locale.setlocale(locale.LC_MONETARY,'zh_CN.UTF-8') locale.setlocale(locale.LC_TIME,'zh_CN.UTF-8') |
4
CppOrJava OP @lihongjie0209 Linux 和 Windows 下 git bash 是正常的
其实感觉跟 antiword 关系更大一些, cmd 下 chcp 65001 后 antiword 的输出仍然会有乱码 但在 git bash 下调用 antiword, 就不会输出乱码 |
5
zjsxwc 2018-11-04 10:09:05 +08:00 via Android
GB2312 的问题吧
|