首页 > 解决方案 > 在 Python 中解码从 JavaScript 生成的 base64 编码 JSON 字符串

问题描述

JSON.stringify使用和从 JavaScript 生成这个 base64 编码的 JSON 字符串btoa

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 查询字符串参数传递。

谢谢!

标签: javascriptpythonjsonunicodebase64

解决方案


你也可以用 JavaScript

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

尽管我认为 btoa 仅适用于扩展的 ascii 表,而不适用于所有 unicode 字符。

然后在 Python 中

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

推荐阅读