Warm tip: This article is reproduced from serverfault.com, please click

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

(其他 - Decode a base64 encoded JSON string generated from JavaScript in Python)

发布于 2020-11-30 10:33:03

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

谢谢!

Questioner
NiKo
Viewed
0
staylor 2020-11-30 18:55:03

你也可以使用JavaScript进行操作

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

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

然后在Python中

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