如果显式定义,则以下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/

10-12 17:02