【发布时间】:2013-03-13 01:22:59
【问题描述】:
我正在尝试修复 python 项目中的错误。当客户端在使用 PyQt 编写的程序中输入一些 utf8 字符(如 'é')时,会出现错误。客户端以控制台模式执行程序(激活virtualenv并执行脚本main.py) 但是当我在 Eclipse 和 Pydev 下运行相同的程序时,我无法重现问题(一切正常)。此外,我确信 Eclipse 使用与客户端相同的 virtualenv。 在 Eclipse 中运行程序怎么可能与在命令行中运行不同呢? 谢谢,
【问题讨论】:
-
错误信息是什么?
-
这是捕获错误
except ValueError: QMessageBox.warning(self, "Value Error", "Error in the type of the value", buttons=QMessageBox.Ok)的代码 -
如果这是 Windows 命令行,Windows 不使用 utf-8。它有一些代码页,可以将每个字符转换成。
-
不,我在 Debian 上运行它,但我尝试手动打印回溯至
Traceback (most recent call last): File "/home/hnng/workspace/dxp_valoris/valoris_super/tables.py", line 202, in udpateValues setattr(elem, fieldName_id, unicode(str(widget.toPlainText()))) UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 0: ordinal not in range(128)` -
pydev 将默认编码设置为“utf8”...控制台通常是 ascii,您需要执行类似
user_value = user_value.decode('utf8')或类似的操作... pydev 试图通过显示来提供帮助utf8 字符...但是当它不反映现实世界时,它真的很令人沮丧...