如果显式定义,则以下Unicode和字符串可以单独存在:
>>> value_str='Andr\xc3\xa9'
>>> value_uni=u'Andr\xc3\xa9'
如果我只将
u'Andr\xc3\xa9'
分配给上面这样的变量,如何在python 2.5或2.6中将其转换为'Andr\xc3\xa9'
?编辑:
我做了以下工作:
>>> value_uni.encode('latin-1')
'Andr\xc3\xa9'
这解决了我的问题。有人能告诉我到底发生了什么吗?
最佳答案
你好像把编码搞混了。似乎您真正想要的是相当于u'Andr\xe9'
的'André'
。
但你所看到的似乎是一种被错误解码的UTF-8编码。您可以通过将unicode字符串转换为普通字符串来修复它。我不确定最好的方法是什么,但这似乎有效:
>>> ''.join(chr(ord(c)) for c in u'Andr\xc3\xa9')
'Andr\xc3\xa9'
然后正确解码:
>>> ''.join(chr(ord(c)) for c in u'Andr\xc3\xa9').decode('utf8')
u'Andr\xe9'
现在它的格式是正确的。
但是,如果可能的话,您应该首先尝试找出数据编码错误的原因,并在那里解决该问题。
关于python - 如何在Python级别将unicode转换为字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2783079/