1

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

4

1 回答 1

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 的字符将被视为错误”。

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

>>> unicode(str("é"), 'latin_1')
u'\x82'
于 2013-03-12T17:22:59.687 回答