在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 =”。
我无法弄清楚接下来要做什么。
答案 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)
在Eclipse中,在偏好设置 - >中 PyDev - > 口译员 - > Python解释器,在环境标签中,我添加了环境变量 PYTHONIOENCODING 并将其值指定为 utf-8
PyDev Interactive Console现在可以正确显示上述中文字符(以及泰文字符)。