Мне нужно использовать GET-запрос для отправки JSON на мой сервер через клиент JavaScript, поэтому я начал возвращать ответы, чтобы убедиться, что при переводе ничего не потеряно. Кажется, с обычным текстом проблемы не возникает, но как только я включаю какой-либо символ Unicode (например, «ç»), символ как-то кодируется (например, «\ u00e7»), и возвращаемое значение отличается от значение запроса. Моя главная проблема заключается в том, что A) В моем коде Python сохраняет то, что клиент намеревался при отправке в базу данных правильно, и B) Я возвращаю клиенту те же значения, которые были отправлено (при тестировании).
Возможно, это означает, что я не могу использовать base64, или мне нужно сделать что-то другое по пути. Я в порядке с этим. Моя реализация - просто попытка средства для достижения цели.
Текущие шаги (при необходимости можно изменить любой шаг):
Необработанная строка JSON, которую я хочу отправить на сервер:
'{"weird-chars": "°ç"}'
JavaScript Кодированная в Base64 версия строки, передаваемой на сервер через параметр GET (примечание: будет ли знак равенства в конце кодированной строки вызывать какие-либо проблемы?):
http://www.myserver.com/?json=eyJ3ZWlyZC1jaGFycyI6ICLCsMOnIn0=
Python str
результат от b64decode
параметра:
'{"weird-chars": "\xc2\xb0\xc3\xa7"}'
Python dict
из json.loads
расшифрованного параметра:
{'weird-chars': u'\xb0\xe7'}
Python str
из json.dumps
этого dict
(и последующий вывод в браузер):
'{"weird-chars": "\u00b0\u00e7"}'