Python字符串编码

Python字符串编码,python,string,encode,python-2.x,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) 如何修复?不要将unicode与字节字符串混合使用。 Python2执行隐式转换,但Python3不执行。即使您没有使用Python3,最好避免将两者混合使用

我有这个密码

att=att.replace("à","a")
但是我收到了这个错误

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

如何修复?

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

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

att.replace("à","a")
在试图替换
att
中的
“a”
之前,将隐式尝试将
“a”和
“a”解码为unicode。
Python2使用
ascii
(默认情况下)执行隐式解码

“a”.decode('ascii')
引发
UnicodeDecodeError:'ascii'编解码器无法解码位置0:序号不在范围(128)内的字节0xc3

要修复此错误,由于
att
unicode
att.replace
的参数也应该是unicode:

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

你可以破译它们
att=att.decode('utf-8')。替换(“a”)。decode('utf-8'),“a”)