json.load изменяет вводимую строку - PullRequest
0 голосов
/ 30 сентября 2018

Привет, я работаю над простой программой, которая берет данные из файла json (ввод через HTML-форму с колбой, обрабатывающей данные) и использует эти данные для вызова API.

Итак, у меня есть некоторые JSON, как это:

[{"id": "ßLÙ", "server": "NA"}]

, и я хочу отправить идентификатор для вызова API, как в этом примере:

http://apicallnamewhatever+id=ßLÙ

однако, когда я загружаю JSONфайл в мой app.py с помощью следующей команды

ids = json.load(open('../names.json'))

json.load, похоже, меняет идентификатор с 'ßLÙ' на 'ßLÙ'

Я не уверен, почему это происходит во время json.загрузить, но мне нужно найти способ получить 'ßLÙ' в вызов API вместо деформированного 'ßLÙ'

1 Ответ

0 голосов
/ 30 сентября 2018

Выглядит так, будто ваш names.json закодирован в "utf-8", но вы открываете его как "windows-1252" [*] или что-то в этом роде.Попробуйте

json.load(open('names.json', encoding="utf-8"))

, и вам, вероятно, также следует URL-кодировать id вместо конкатенации его непосредственно с адресом этого сервера, что-то вроде этого:

urllib2.quote(idExtractedFromJson.encode("utf-8")

[*] Спасибо @jDo за указание на это, я изначально угадал неправильную кодовую страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...