pydev与unicode的奇怪行为

时间:2013-03-12 16:52:12

标签: python pydev

我正在尝试修复python项目中的错误。当客户端将一些像'é'这样的utf8字符输入到用PyQt编写的程序中时,会出错。客户端以控制台模式执行程序(激活virtualenv并执行脚本main.py) 但是当我在Eclipse和Pydev下运行相同的程序时,我无法重现问题(一切正常)。此外,我确信Eclipse使用与客户端相同的virtualenv。 怎么可能在Eclipse中运行程序可能与在命令行中运行不同? 谢谢,

1 个答案:

答案 0 :(得分:1)

根据您的评论,有一些事情正在发生。首先,toPlainText已经返回一个unicode对象。问题出在这里:

>>> str("é")
'\x82'
>>> unicode(str("é"))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0x82 in position 0: ordinal
not in range(128)

根据http://docs.python.org/2/howto/unicode.html,“如果您不使用编码参数,则使用ASCII编码进行转换,因此大于127的字符将被视为错误”。

因此,如果您仍需要编码,则添加编码1参数,例如:

>>> unicode(str("é"), 'latin_1')
u'\x82'