2016-12-06 4 views
0

Я использовал модуль 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) 

Что я здесь отсутствует?

+0

@pradyunsg К сожалению название вопроса слишком вводит в заблуждение, и я просто редактируется. – Blaszard

ответ