String 如何解码unicode字符串Python

String 如何解码unicode字符串Python,string,python-2.7,unicode,decode,encode,String,Python 2.7,Unicode,Decode,Encode,解码编码字符串的最佳方式是什么:u'u\xf1somestring' 背景:我有一个包含随机值(字符串和整数)的列表,我试图将列表中的每一项转换为字符串,然后处理其中的每一项 结果表明,其中一些项目的格式为:u'u\xf1somestring' 当我尝试转换为字符串时,出现错误:UnicodeEncodeError:'ascii'编解码器无法对位置1中的字符u'\xf1'进行编码:序号不在范围(128) 我试过了 item = u'u\xf1somestring' decoded_value =

解码编码字符串的最佳方式是什么:
u'u\xf1somestring'

背景:我有一个包含随机值(字符串和整数)的列表,我试图将列表中的每一项转换为字符串,然后处理其中的每一项

结果表明,其中一些项目的格式为:
u'u\xf1somestring'
当我尝试转换为字符串时,出现错误:
UnicodeEncodeError:'ascii'编解码器无法对位置1中的字符u'\xf1'进行编码:序号不在范围(128)

我试过了

item = u'u\xf1somestring'
decoded_value = item.decode('utf-8', 'ignore')
然而,我一直得到同样的错误


我已经阅读了有关unicode字符的内容,并尝试了许多来自SO的建议,但到目前为止,没有一个有效。我是不是遗漏了什么

您需要调用
编码
函数而不是
解码
函数,因为
已经解码

像这样:

decoded_value = item.encode('utf-8')
该字符串已被解码(它是一个Unicode对象)。如果要将其存储在文件中(或发送到哑终端等),则需要对其进行编码


通常,在使用Unicode时,您应该(在Python 2中)在工作流的早期对所有字符串进行解码(您似乎已经这样做了;许多处理internet流量的库已经为您这样做了),然后在Unicode对象上完成所有工作,最后在写回它们时,将它们编码为您正在使用的任何编码。

如果是Unicode字符串,它已经被解码。您可能会发现这篇文章很有用:,它是由经验丰富的Ned Batchelder编写的。我假设您正在使用Python 2。您应该总是在提到Python版本时提出Unicode问题(最好带有适当的标记),因为Python 2和Python 3处理Unicode的方式完全不同。FWIW,
s=u'u\xf1somestring'.encode('utf-8');打印s,repr(s)
prints
uñsomestring'u\xc3\xb1somestring'
您解码为Unicode,编码为字节字符串。@MarkTolonen:那么您在这里发现我的答案的哪一部分错了?我特别使用了代码块来表示我在这里使用了方法名。如果字符串是Unicode字符串,那么它已经被解码了<编码>项。编码('utf-8')生成一个
编码的\u值
。你(和OP)混淆了术语。