无法使Eclipse(Luna)PyDev控制台使用UTF-8

时间:2014-08-17 05:20:20

标签: eclipse unicode pydev

在Eclipse Luna(4.0.4)/ Python 3.4.1中,尽管尝试了几个建议的纠正步骤,但我无法让PyDev 3.6.0控制台与Unicode协同工作。

我在Dive Into Python 3中尝试了这个例子:http://www.diveintopython3.net/files.html

如果我执行示例的 a_file.read(),PyDev控制台会显示:

  

'潜入Python \ u662f \ u4e3a \ u6709 \ u7ecf \ u9a8c ......'而不是'潜入Python是为了有经验的程序员编写的一本...'

如果我将中文字符粘贴到PyDev控制台ala cstring ='是为有经验的程序员编写的一本',那么在控制台中键入“cstring ENTER”,我再次得到'\ u662f \ u4e3a \ u6709 \ u7ecf \ u9a8c ...'

如果我然后尝试 print(cstring),我会收到以下错误:

  

追踪(最近一次通话):     文件“”,第1行,in     文件“C:\ Python34 \ lib \ encodings \ cp1252.py”,第19行,编码       return codecs.charmap_encode(input,self.errors,encoding_table)[0]   UnicodeEncodeError:'charmap'编解码器无法编码位置0-13中的字符:字符映射到

我不知道该怎么处理这些信息。 cp1252.py 位是我困惑的核心,因为我告诉Eclipse和PyDev在我能找到的每个地方使用UTF-8,从以下信息开始:​​

Printing Unicode in eclipse Pydev console and in Idle

但是,我无法修改这些步骤中描述的“site.py”,因为 [EclipseInstallDir] /lib/site.py 不包含“encoding =”。

我无法弄清楚接下来要做什么。

2 个答案:

答案 0 :(得分:2)

常规运行:

问题在于PyDev会根据你在运行配置中使用的编码来覆盖PYTHONIOENCODING(这也是控制台视图使用的编码 - 因此,没有任何意义可以使用PYTHONIOENCODING使用值和PyDev端的已分配控制台使用另一个值)。

您可以更改您在运行配置中使用的编码: 运行>运行配置>常见>编码。

默认情况下,它会使用正在启动的文件的编码(您可以更改工作区的默认编码,一般是>工作区>文本文件编码)。


对于交互式控制台运行:

对于交互式控制台运行,当前没有API来改变java方面的编码,因此,必须在默认情况下使用UTF-8的VM中启动Eclipse ...实际上,这意味着您必须添加:

-Dfile.encoding = UTF-8

在eclipse.ini中的Eclipse的vmargs(在这种情况下,它还建议在相关的解释器中设置PYTHONIOENCODING环境变量并将其设置为UTF-8)。

答案 1 :(得分:0)

发现它! (至少对于Python 3.4.1,Eclipse Luna 4.0.4,PyDev 3.6.0。)

在Eclipse中,在偏好设置 - >中 PyDev - > 口译员 - > Python解释器,在环境标签中,我添加了环境变量 PYTHONIOENCODING 并将其值指定为 utf-8

PyDev Interactive Console现在可以正确显示上述中文字符(以及泰文字符)。