python和node base64解码之间的区别

时间:2018-04-17 18:26:21

标签: python node.js encoding base64

我对这个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

1 个答案:

答案 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字母的字符,因此它会解码不正确的字节。