Python字符串编码

时间:2015-08-17 17:19:55

标签: python string encode python-2.x

我有这段代码

att=att.replace("à","a")

但我收到了这个错误...

  att=att.replace("à","a")
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0: ordinal not in range(128)

我该如何解决?

1 个答案:

答案 0 :(得分:3)

不要将unicode与字节字符串混合在一起。 Python2进行隐式转换,但Python3没有。即使您不使用Python3,最好避免混合使用Python3。

在Python2中,如果att是unicode,那么

att.replace("à","a")
在尝试替换"à" "a"之前,隐式 尝试将解码 "à"att设为unicode 1}}。 Python2使用ascii(默认情况下)进行隐式解码。

"à".decode('ascii')提出UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0: ordinal not in range(128)

要解决此错误,由于attunicodeatt.replace的参数也应为unicode:

att.replace(u"à",u"a")