2013-03-12 20 views
1

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

+0

有什么错误信息? – alvas 2013-03-12 16:55:31

+0

这是捕获错误的代码'ValueError: QMessageBox.warning(self,“Value Error”,“Error in the type of the value”,buttons = QMessageBox.Ok)' – nam 2013-03-12 16:57:39

+1

如果这是Windows命令行,Windows不使用utf-8。它有一些代码页,它将每个字符转换成。 – 2013-03-12 17:04:04

回答

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'