我对这个base64解码问题感到困惑,似乎python和node.js的做法不同。我相信Node正确地做到了这一点。任何人都可以帮助指出为什么python在这里不起作用?
谢谢。
节点
> console.log(Buffer.from('Im3Osc6_z4HPgc-J==', 'base64').toString());
"mαορρω
的Python
>>> from base64 import decodestring
>>> print decodestring('Im3Osc6_z4HPgc-J==')
"mαγ?s?p
答案 0 :(得分:2)
您提供的内容实际上不是标准的base64,而是一个URL安全的base64
在标准的Base64字母表中替换
WaitForExit
而不是-
和+
而不是_
"
要在Python中对其进行解码,您需要使用base64.urlsafe_b64decode
。
/
然后,在该base64中编码的字节串是UTF-8;要获取Unicode字符串,您必须解码它:
>>> import base64
>>> base64.urlsafe_b64decode('Im3Osc6_z4HPgc-J==')
'"m\xce\xb1\xce\xbf\xcf\x81\xcf\x81\xcf\x89'
使用>>> print base64.urlsafe_b64decode('Im3Osc6_z4HPgc-J==').decode('utf-8')
"mαορρω
会得到奇怪的结果,因为它只会删除任何不属于标准base64字母的字符,因此它会解码不正确的字节。