关于 Pycharm 非常奇怪的问题, 麻烦进来看下

2016-12-28 15:54:16 +08:00
 oddcc

一个很简单的脚本, 使用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

现在不知道问题出在哪里了...求教

2805 次点击
所在节点    Python
5 条回复
bazingaterry
2016-12-28 16:00:49 +08:00
open 那里指定一下 encoding
Sylv
2016-12-28 16:15:15 +08:00
感觉可能是 PyCharm 和终端的环境变量不同导致的问题,尝试分别在两处运行以下代码看看环境变量有什么不同:
import os
print os.environ
wwqgtxx
2016-12-28 16:19:30 +08:00
你用 notepad++看看两次生成的 csv 文件的具体编码
有可能是你调用的那个 jar 库根据环境变量生成了不同的编码格式的 csv 文件
kokutou
2016-12-28 16:25:24 +08:00
cmd 。。。。
在执行你的 cmd 之前,执行一下 chcp 65001 切换 Windows 默认代码页从 cp936 到 utf-8 。。。
oddcc
2016-12-28 16:26:46 +08:00
@Sylv 谢谢, 您的方法是对的

对比了之后发现, PyCharm 的环境变量中是 'LC_CTYPE': 'en_US.UTF-8'
终端中'LC_CTYPE': 'UTF-8'

在 PyCharm 中设置了环境变量之后就 OK 了, 非常感谢

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

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

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

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

© 2021 V2EX