我认为我主宰了Python 2中的所有Unicode内容,但似乎有些东西我不明白。我有来自HTML的用户输入到我的python脚本:
a = "m\xe9dico"
我希望这是médico
(这意味着医生)。所以要将其转换为unicode我正在做:
a.decode("utf-8")
或者:
unicode(a, "utf-8")
但这是在扔:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 1: ordinal not in range(128)
如何实现这一目标?
答案 0 :(得分:5)
这不是utf-8:
print txt.decode('iso8859-1')
Out[14]: médico
如果你想要utf-8字符串,请使用:
txt.decode('iso8859-1').encode('utf-8')
Out[15]: 'm\xc3\xa9dico'
答案 1 :(得分:2)
您可以在字符串前加u
,将其标记为unicode文字:
>>> a = u'm\xe9dico'
>>> print a
médico
>>> type(a)
<type 'unicode'>
或者,要转换现有字符串:
>>> a = 'm\xe9dico'
>>> type(a)
<type 'str'>
>>> new_a = unicode(a,'iso-8859-1')
>>> print new_a
médico
>>> type(new_a)
<type 'unicode'>
>>> new_a == u'm\xe9dico'
True
进一步阅读:Python docs - Unicode HOWTO。