base64在js中编码,在python中解码。Unicode问题

base64在js中编码,在python中解码。Unicode问题,python,unicode,encoding,utf-8,python-2.x,Python,Unicode,Encoding,Utf 8,Python 2.x,我在js中有以下字符串 *"form-uploads/2015 Perry's Awärds Letter.jpg"* 它有一个ä符号 当我使用btoa(chrome)在js中对其进行编码时,我得到以下信息: “Zm9ybS11cGxvYWRzLzIwMTUgUGVycnkncyBBd+RyZHMgTGV0dGVyLmpwZw=” 当我尝试用python对其进行解码时,我得到以下结果: In[16]: base64.b64decode('Zm9ybS11cGxvYWRzLzIwMTUgUGVy

我在js中有以下字符串

*"form-uploads/2015 Perry's Awärds Letter.jpg"*
它有一个
ä
符号

当我使用btoa(chrome)在js中对其进行编码时,我得到以下信息: “Zm9ybS11cGxvYWRzLzIwMTUgUGVycnkncyBBd+RyZHMgTGV0dGVyLmpwZw=”

当我尝试用python对其进行解码时,我得到以下结果:

In[16]: base64.b64decode('Zm9ybS11cGxvYWRzLzIwMTUgUGVycnkncyBBd+RyZHMgTGV0dGVyLmpwZw==')
Out[16]: "form-uploads/2015 Perry's Aw\xe4rds Letter.jpg"
所以ä迷路了,如果我试图解码utf-8的字符串,我会得到一个错误

In[18]: base64.b64decode('Zm9ybS11cGxvYWRzLzIwMTUgUGVycnkncyBBd+RyZHMgTGV0dGVyLmpwZw==').decode('utf-8')
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe4 in position 28: invalid continuation byte

解码后,如何在python代码中获得合适的
utf-8
ä

您需要使用
latin1
编码进行解码,然后打印Unicode:

>>> print base64.b64decode(u'Zm9ybS11cGxvYWRzLzIwMTUgUGVycnkncyBBd+RyZHMgTGV0dGVyLmpwZw==').decode('latin1')
form-uploads/2015 Perry's Awärds Letter.jpg

请尝试latin1,它不能是utf8,因为在utf8中没有MSB设置为1的1字节字符(如\xe4)

此外,btoa通常不能很好地使用unicode:

s.decode(“base-64”)。decode(“拉丁语-1”)
也会做同样的事情,您不需要导入库
base64.b64decode('Zm9ybS11cGxvYWRzLzIwMTUgUGVycnkncyBBd+RyZHMgTGV0dGVyLmpwZw==').decode('latin1')