解码从 Python 中的 JavaScript 生成的 base64 编码 JSON 字符串

Decode a base64 encoded JSON string generated from JavaScript in Python

使用JSON.stringifybtoa从JavaScript生成这个base64编码的JSON字符串:

btoa(JSON.stringify({"é": "è"}))
"eyLpIjoi6CJ9"

我正在尝试从 Python 对其进行解码。我在做:

>>> import base64
>>> import json
>>> json.loads(base64.b64decode("eyLpIjoi6CJ9"))

我收到 UnicodeDecodeError:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 2: invalid continuation byte

在 Python 中正确解码的正确方法是什么?

注意:我使用的是 base64 编码,因此可以将其作为 URL 查询字符串参数安全地传递。

谢谢!

您也可以在 JavaScript

    btoa(unescape(encodeURIComponent(JSON.stringify({"é": "è"}))))
    base64 output: eyLDqSI6IsOoIn0=

虽然我认为 btoa 仅适用于扩展的 ascii table,但并非所有 unicode 字符。

然后在Python

    json.loads(base64.b64decode("eyLDqSI6IsOoIn0=")
    prints: {'é': 'è'}