我已经经历了很多,我将在Eclipse(PyDev)中解码/编码一些Unicode字符串,它运行得很好,而且运行得很好,但是当我从命令行启动相同的脚本时(例如),我会得到编码错误。在
对此有什么简单的解释吗?Eclipse是否对Unicode做了什么/以不同的方式操作它?在
编辑:
示例:
value = u'\u2019'.decode( 'utf-8', 'ignore' )
return value
这在Eclipse(PyDev)中可以工作,但如果我在Idle或命令行中运行它就不行了。在
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 135: ordinal not in range(128)
只是想补充一下它为什么在PyDev上工作:它有一个特殊的站点customize,它将通过sys.setdefaultencoding使用PyDev控制台的编码。在
请注意,bobince的响应是正确的,如果您有一个unicode字符串,则必须使用encode()方法将其转换为一个正确的字符串(如果您有一个字符串并希望将其转换为unicode,则可以使用decode)。在
字节串被解码成Unicode字符串。在
Unicode字符串被编码成字节字符串。在
因此,如果您说
someunicodestring.decode
,它会尝试将Unicode字符串强制为字节字符串,以便能够对其进行解码(回到Unicode!)。作为一个隐式转换,此编码步骤将采用默认编码,它可能在不同的环境中有所不同,并且很可能是“safe”值ascii
,这肯定会产生您提到的错误,因为ASCII不能包含字符U+2019。依赖默认编码几乎永远不是一个好主意。在所以尝试
^{pr2}$decode
一个Unicode字符串是没有意义的。我敢肯定你的意思是:(
ignore
对于编码到UTF-8是多余的,因为此编码没有不能表示的字符。)相关问题 更多 >
编程相关推荐