2

我正在使用Eclipse+PyDev编写代码,并且在将此代码移至生产环境时经常遇到 unicode 问题。原因在这个小例子中显示

a = u'фыва '\
'фыва'

如果 Eclipse 看到这一点,它会像什么都没发生一样创建 unicode 字符串,但是如果直接向 Python shell(Python 2.7.3)键入相同的命令,您将得到以下信息:

SyntaxError: (unicode error) 'ascii' codec can't decode byte 0xd1 in position 0: ordinal not in range(128)

因为正确的代码是:

a = u'фыва '\
u'фыва'

但是由于Eclipse+PyDev的“宽容”,我总是遇到麻烦 :( 我怎样才能强制 PyDev “遵守规则”?

4

5 回答 5

3

发生这种情况是因为控制台的编码是 utf-8。

目前无法在 UI 中全局设置它,尽管您可以通过编辑来更改它:\plugins\org.python.pydev_2.7.6\pysrc\pydev_sitecustomize\sitecustomize.py

只需删除对:(第 108 行)sys.setdefaultencoding(encoding) 的调用

于 2013-07-01T05:55:44.387 回答
2

此问题应在 PyDev 3.4.0(尚未发布)中修复。Fabio(PyDev 维护者)说:“从现在开始,PyDev 将只设置 PYTHONIOENCODING 而不会再更改默认编码”。并且PYTHONIOENCODING从 Python 2.6 开始受支持。

这是GitHub 上的提交

于 2014-03-14T19:04:20.703 回答
0

尝试添加# -*- coding: utf-8 -*-为源文件的第一行。它应该使 Python 表现良好。

于 2013-06-28T07:40:10.520 回答
0

这在我的源代码中为我解决了这个问题,而无需修改 pydev sitecustomize.py 文件:

import sys
reload(sys).setdefaultencoding("utf-8")

您可以使用“ascii”或您想使用的任何其他编码。

就我而言,当我在命令行上运行程序时,PyDev 使用的是“utf-8”,而控制台错误地设置了“ascii”。

于 2014-05-18T04:12:03.370 回答
0

这可能不是你要问的。但就我而言,我意外地从各种来源复制了我的代码,得到了这些 UTF-8 字符。为了找出我在Eclipse Mars中遇到的麻烦:

Edit->set encoding
other->US ASCII

然后我试图保存我的文件。我有模态窗口告诉我“保存问题”。有一个按钮"Select First Character" 它向我显示了令人不安的字符,我只是删除了该字符并输入了 ASCII 字符。

于 2015-12-19T01:07:32.790 回答