在Python2.x中使用Unicode和Utf-8代码解码字符串

在Python2.x中使用Unicode和Utf-8代码解码字符串,unicode,encoding,utf-8,Unicode,Encoding,Utf 8,假设我们有一个字符串: s = '\xe5\xaf\x92\xe5\x81\x87\\u2014\\u2014\xe5\x8e\xa6\xe9\x97\xa8' 不知何故,Unicode为\u2014的两个符号'-'在UTF-8中未正确编码为'\xe2\x80\x94'。有没有一种简单的方法来解码这个字符串?它应该被解码为寒假——厦门 手动使用替换功能正常: t = u'\u2014' s.replace('\u2014', t.encode('utf-8') print s 然而,它不是自

假设我们有一个字符串:

s = '\xe5\xaf\x92\xe5\x81\x87\\u2014\\u2014\xe5\x8e\xa6\xe9\x97\xa8'
不知何故,Unicode为
\u2014
的两个符号
'-'
在UTF-8中未正确编码为
'\xe2\x80\x94'
。有没有一种简单的方法来解码这个字符串?它应该被解码为
寒假——厦门

手动使用替换功能正常:

t = u'\u2014'
s.replace('\u2014', t.encode('utf-8')
print s
然而,它不是自动的。如果我们提取Unicode

index = s.find('\u')
t = s[index : index+6]

然后
t='\\u2014'
。如何将其转换为UTF-8代码?

您的
replace()

应该是:

s.replace("\\u2014", u'\u2014'.encode("utf-8") )

在问题的评论中检查我的警告。您不应该以这种情况结束。

需要更多代码。如何使用部分转换的Unicode文本生成UTF-8字符串?看起来您的其他代码有一些根本性的错误,您应该加以修复,而不是绕过它。一些格式可以像这样对字符串进行编码,例如JSON现在很常见。如果您试图解析JSON字符串,请使用JSON解析器。