Я использовал модуль Requests
в Python и отправил запрос и получил ответ.Можно ли изменить кодировку, используемую для автоматического распаковки данных в запросах?
Ответ, кажется gzip
, учитывая, что r.headers
имеет следующую информацию:
{'Date': 'Tue, 06 Dec 2016 17:35:44 GMT', 'Content-Type': 'application/json', 'Content-Length': '21632', 'Cache-Control': 'public,max-age=3600', 'Content-Encoding': 'gzip', 'Vary': 'Accept-Encoding'}
Однако, в то время как Requests
решает его кодировку и возвращает распакованные данные, когда я попытался проверить r.text
, он получил UnicodeEncodeError: 'ascii' codec can't encode character XXX
,
Выкопав его дальше, я обнаружил, что в ответе есть одна ошибка кодирования (r.content
, которая возвращает данные как bites
).
Currencies":[{"Code":"JPY","Symbol":"\xc2\xa5","ThousandsSeparator":",...
Однако я не уверен, как я могу обработать ошибочную ошибку кодирования. Даже если я установил его кодировку в utf-8
(r.encoding = "utf-8"), я все равно получил UnicodeEncodeError
. Я чувствую, что это было gzip
, что вызвало его проблему, которую Requests
прошел автоматически, но как я могу исправить ее неправильно, но автоматически сделал декодирование?
Я послал запрос API SkyScanner, в со следующим кодом:
headers = {
"Content-Type": "application/x-www-form-urlencoded",
"Accept": "application/json",
"charset": "utf-8"
}
r = requests.get(url, headers=headers)
Что я здесь отсутствует?
@pradyunsg К сожалению название вопроса слишком вводит в заблуждение, и я просто редактируется. – Blaszard