为什么在控制台中运行Python脚本时会引发UnicodeDecodeError,而在Eclipse/PyDev中却没有?

Hen*_*ger 0 unicode pydev python-2.7 python-unicode

我的脚本在Windows 8控制台中运行时会引发UnicodeDecodeError,但在Eclipse/PyDev中作为启动配置运行时则不会.PyDev环境和从unicode控制台运行python.exe的区别在哪里?

Hen*_*ger 5

区别在于默认编码.你可以通过这个检索sys.getdefaultencoding().您会注意到Windows 8 shell中的默认编码是ascii,而PyDev默认启动配置的默认编码为项目的默认编码,默认编码本身默认为Cp1252.

主要是在代码中使用默认编码更改一些(有问题的)技巧reload(sys); sys.setdefaultencoding('myencoding').Ian Bicking在他的博客文章The Illusive setdefaultencoding中记录了这一点.

如果您只想将PyDev行为与您在控制台(或生产服务器)上看到的行为对齐,则可以更改启动配置属性的"公共"选项卡上的默认编码:

在此输入图像描述