我有一个加载其中包含一个有趣的字符以.json文件的简单程序。 该方案(见下文),在终端运行正常,但得到的IntelliJ此错误:
UnicodeDecodeError错误:在位置2“ASCII”编解码器不能解码字节0xe2:顺序不在范围内(128)
关键的代码是:
with open(jsonFileName) as f:
jsonData = json.load(f)
如果我更换了与开放:
with open(jsonFileName, encoding='utf-8') as f:
然后,它工作在两个的IntelliJ和终端。 我还是新来的Python和插件的IntelliJ,我不明白为什么它们是不同的。 我想sys.path
可能会有所不同,但输出让我觉得这不是原因。 可能有人请解释一下吗? 谢谢!
版本:
- 操作系统:Mac OS X 10.7.4(也10.6.8测试)
- 蟒3.2.3(V3.2.3:3d0686d90f55,2012年4月10日,十一点25分50秒)/Library/Frameworks/Python.framework/Versions/3.2/bin/python3.2
- 的IntelliJ:11.1.3终极
文件(2):
1. unicode-error-demo.py
#!/usr/bin/python
import json
from pprint import pprint as pp
import sys
def main():
if len(sys.argv) is not 2:
print(sys.argv[0], "takes one arg: a .json file")
return
jsonFileName = sys.argv[1]
print("sys.path:")
pp(sys.path)
print("processing", jsonFileName)
# with open(jsonFileName) as f: # OK in Terminal, but BUG in IntelliJ: UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 2: ordinal not in range(128)
with open(jsonFileName, encoding='utf-8') as f: # OK in both
jsonData = json.load(f)
pp(jsonData)
if __name__ == "__main__":
main()
2.编码-temp.json
["™"]