我想打印一个unicode字符串,其中没有特定的编码十六进制。我从Facebook上获取这个数据,该数据在UTF-8的html标头中有一个编码类型。当我打印这个类型 - 它说它的unicode,但是当我尝试用unicode-escape解码时,说有编码错误。为什么在我使用解码方法时尝试编码?解码函数尝试编码Python
代码
a='really long string of unicode html text that i wont reprint'
print type(a)
>>> <type 'unicode'>
print a.decode('unicode-escape')
>>> Traceback (most recent call last):
File "scfbp.py", line 203, in myFunctionPage
print a.decode('unicode-escape')
UnicodeEncodeError: 'ascii' codec can't encode character u'\u20ac' in position 1945: ordinal not in range(128)
这不是他错误的原因。他正在尝试解码一个unicode对象。由于您从二进制数据解码为Unicode数据,因此Python 2将首先*编码*它,它使用ascii编解码器进行编码。这就是失败。 – 2011-01-26 11:49:43
@Lennart Regebro:其实我怀疑他的字符串的实际类型是`str`,而不是`unicode`。看看他如何初始化字符串 - 注意没有`u`。我认为他所拥有的不是一个unicode字符串,而是一个* unicode-escaped *字符串(不一样!)。这是他试图解码unicode。如果我的理论是正确的,那么我认为这个答案其实是正确的。 – 2011-01-26 11:55:54