一个很简单的脚本, 使用os.system()
执行了一句 Java 语句, 这句 Java 的作用就是解析 pdf 文件, 输出文本到一个 csv 文件.
问题是这个脚本如果在 PyCharm 里跑的话, 写入的编码就是 ASCII, 打开中文就是问号; 如果在终端直接运行, 写入的编码就是 UTF-8, 中文显示一切正常
PyCharm 中有关 encoding 的设置都是 utf-8.
代码如下
# coding=utf-8
import os
import chardet
cmd = 'java -jar ~/tabula.jar ~/80032035 陈勇.pdf -p all -n -o pdf.csv'
os.system(cmd)
f = open("pdf.csv", 'rb')
for l in f.readlines(): # 这两句检查文本编码方式
print chardet.detect(l)
在 PyCharm 中运行的话, pdf.csv 是这样的:
{'confidence': 1.0, 'encoding': 'ascii'}
输出显示编码方式是 ASCII
如果在终端运行的话, pdf.csv 是这样的:
{'confidence': 0.99, 'encoding': 'utf-8'}
输出显示编码方式是 UTF-8
现在不知道问题出在哪里了...求教
1
bazingaterry 2016-12-28 16:00:49 +08:00 via iPhone
open 那里指定一下 encoding
|
2
Sylv 2016-12-28 16:15:15 +08:00 1
感觉可能是 PyCharm 和终端的环境变量不同导致的问题,尝试分别在两处运行以下代码看看环境变量有什么不同:
import os print os.environ |
3
wwqgtxx 2016-12-28 16:19:30 +08:00 via iPhone
你用 notepad++看看两次生成的 csv 文件的具体编码
有可能是你调用的那个 jar 库根据环境变量生成了不同的编码格式的 csv 文件 |
4
kokutou 2016-12-28 16:25:24 +08:00 via Android
cmd 。。。。
在执行你的 cmd 之前,执行一下 chcp 65001 切换 Windows 默认代码页从 cp936 到 utf-8 。。。 |