我应该如何将包含unicode字符的字符串转换为unicode?

时间:2014-03-24 16:34:30

标签: python python-2.7 unicode python-unicode

我认为我主宰了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) 

如何实现这一目标?

2 个答案:

答案 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