使用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查询字符串参数传递。
谢谢!
你也可以使用JavaScript进行操作
btoa(unescape(encodeURIComponent(JSON.stringify({"é": "è"}))))
base64 output: eyLDqSI6IsOoIn0=
尽管我认为btoa仅适用于扩展的ascii表,而不适用于所有unicode字符。
然后在Python中
json.loads(base64.b64decode("eyLDqSI6IsOoIn0=")
prints: {'é': 'è'}
BTOA是Latin-1的:/ developer.mozilla.org/fr/docs/Web/API/WindowBase64/...