#javascript #python #json #unicode #base64
#javascript #python #json #юникод #base64
Вопрос:
Возьмите эту строку JSON в кодировке base64, сгенерированную из JavaScript, используя JSON.stringify
и 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.
Спасибо!
Ответ №1:
Вы также можете выполнить в JavaScript
btoa(unescape(encodeURIComponent(JSON.stringify({"é": "è"}))))
base64 output: eyLDqSI6IsOoIn0=
хотя я думаю, что btoa работает только с расширенной таблицей ascii, а не со всеми символами Юникода.
Затем в Python
json.loads(base64.b64decode("eyLDqSI6IsOoIn0=")
prints: {'é': 'è'}
Комментарии:
1. btoa на латыни -1 :/ developer.mozilla.org/fr/docs/Web/API/WindowBase64 /…