【问题标题】:Decode a base64 encoded JSON string generated from JavaScript in Python在 Python 中解码从 JavaScript 生成的 base64 编码 JSON 字符串
【发布时间】:2021-03-12 06:37:37
【问题描述】:

使用 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 python json unicode base64


    【解决方案1】:

    你也可以用 JavaScript 做

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

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

    然后在 Python 中

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

    【讨论】:

    猜你喜欢
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多