解码从 Python 中的 JavaScript 生成的 base64 编码 JSON 字符串
Decode a base64 encoded JSON string generated from JavaScript in Python
使用JSON.stringify
和btoa
从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: {'é': 'è'}
使用JSON.stringify
和btoa
从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: {'é': 'è'}