Python pydev使用unicode时的奇怪行为

Python pydev使用unicode时的奇怪行为,python,pydev,Python,Pydev,我正试图修复python项目中的一个bug。当客户端在用PyQt编写的程序中输入一些utf8字符(如“é”)时,会出现错误。客户端在控制台模式下执行程序(激活virtualenv并执行脚本main.py) 但是,当我在Eclipse和Pydev下运行相同的程序时,我无法重现问题(一切正常)。此外,我确信Eclipse使用与客户端相同的virtualenv。 在Eclipse中运行程序与在命令行中运行程序有什么不同? 谢谢,根据您的评论,有几件事正在进行。首先,toPlainText已经返回了一个

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

根据您的评论,有几件事正在进行。首先,
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)

根据你的评论,有一些事情正在发生。首先,
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)

错误消息是什么?这是捕获错误的代码
,ValueError除外:QMessageBox.warning(self,“值错误”,“值类型错误”,buttons=QMessageBox.Ok)
如果这是Windows命令行,Windows不使用utf-8。它有一些代码页,可以将每个字符转换为。不,我正在Debian上运行它,但我尝试手动打印回溯,回溯是
traceback(最近一次调用):File“/home/hng/workspace/dxp\u valoris/valoris\u super/tables.py”,第202行,在udpateValues setattr(elem,fieldName\u id,unicode(str(widget.toPlainText())中)UnicodeEncodeError:“ascii”编解码器无法对位置0中的字符u'\xe9'进行编码:序号不在范围(128)
`pydev将默认编码设置为“utf8”。。。控制台通常是ascii码,您需要执行类似于
user\u value=user\u value.decode('utf8')
或类似的操作。。。pydev试图通过显示utf8字符来提供帮助。。。但是当它没有镜像真实世界时,它真的很沮丧…错误消息是什么?这是捕获错误的代码
,除了ValueError:QMessageBox.warning(self,“Value error”,“值类型错误”,buttons=QMessageBox.Ok)
如果这是Windows命令行,Windows不使用utf-8。它有一些代码页,可以将每个字符转换为。不,我正在Debian上运行它,但我尝试手动打印回溯,回溯是
traceback(最近一次调用):File“/home/hng/workspace/dxp\u valoris/valoris\u super/tables.py”,第202行,在udpateValues setattr(elem,fieldName\u id,unicode(str(widget.toPlainText())中)UnicodeEncodeError:“ascii”编解码器无法对位置0中的字符u'\xe9'进行编码:序号不在范围(128)
`pydev将默认编码设置为“utf8”。。。控制台通常是ascii码,您需要执行类似于
user\u value=user\u value.decode('utf8')
或类似的操作。。。pydev试图通过显示utf8字符来提供帮助。。。但当它没有反映真实世界时,它真的很令人沮丧。。。