我对这个base64解码问题感到困惑,似乎python和node.js的做法不同。我相信 Node 正确地做到了这一点。有人能帮忙指出为什么 python 在这里不起作用吗?
谢谢。
Node
> console.log(Buffer.from('Im3Osc6_z4HPgc-J==', 'base64').toString());
"mαορρω
Python
>>> from base64 import decodestring
>>> print decodestring('Im3Osc6_z4HPgc-J==')
"mαγ?s?p
你提供的实际上不是标准的base64,而是URL安全的base64
它替代了-
代替+
and _
代替/
在标准 Base64 字母表中”
要在 Python 中对其进行解码,您需要使用base64.urlsafe_b64decode https://docs.python.org/2/library/base64.html#base64.urlsafe_b64decode.
>>> import base64
>>> base64.urlsafe_b64decode('Im3Osc6_z4HPgc-J==')
'"m\xce\xb1\xce\xbf\xcf\x81\xcf\x81\xcf\x89'
然后,以该base64编码的字节字符串是UTF-8;要获取 Unicode 字符串,您必须对其进行解码:
>>> print base64.urlsafe_b64decode('Im3Osc6_z4HPgc-J==').decode('utf-8')
"mαορρω
With base64.decodestring
你得到了奇怪的结果,因为它只是删除了不属于标准 Base64 字母表的任何字符,因此它解码了不正确的字节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)