一千萬個為什麽

搜索

如何在Python級別將unicode轉換為字符串?

如果明確定義,則以下unicode和string可以自己存在:

>>> value_str='Andr\xc3\xa9'
>>> value_uni=u'Andr\xc3\xa9'

如果我只將 u'Andr \ xc3 \ xa9'分配給上面的變量,如何在Python 2.5中將其轉換為'Andr \ xc3 \ xa9'或2.6?

修改</強>

我做了以下事情:

>>> 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級別將unicode轉換為字符串?