用 antiword 将 doc 转换成 txt,怎么解决返回结果中文乱码问题?

2018-11-03 19:27:36 +08:00
 CppOrJava

问题描述

使用 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
2862 次点击
所在节点    Python
5 条回复
newghost
2018-11-03 19:54:21 +08:00
pdf2text
lihongjie0209
2018-11-03 20:16:32 +08:00
每一个进程执行的都有上下文的, 比如说环境变量, 你在 Python 中把环境变量打出来看看编码的配置项
CppOrJava
2018-11-03 20:19:59 +08:00
@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')
CppOrJava
2018-11-03 20:25:19 +08:00
@lihongjie0209 Linux 和 Windows 下 git bash 是正常的
其实感觉跟 antiword 关系更大一些, cmd 下 chcp 65001 后 antiword 的输出仍然会有乱码
但在 git bash 下调用 antiword, 就不会输出乱码
zjsxwc
2018-11-04 10:09:05 +08:00
GB2312 的问题吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/504156

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX