Запрос возвращает байты, и я не могу их декодировать
по существу, я сделал запрос на веб-сайт и получил байтовый ответ:b'[{"geonameId:"703448"}..........'.
Я смущен, потому что, хотя он имеет тип byte, он очень удобочитаем и выглядит как список json. Я знаю, что ответ закодирован в latin1 от запуска r.encoding
, который возвращен ISO-859-1
и я пытался его расшифровать, но он просто возвращает пустую строку. Вот что у меня пока есть:
r = response.content
string = r.decode("ISO-8859-1")
print (string)
и здесь он печатает пустую строку. Однако, когда я бегу
len(string)
Я получаю: назад 31023
Как я могу декодировать эти байты, не возвращая пустую строку?
2 ответов
другое решение - использовать response.текст, который возвращает содержимое в unicode
Type: property
String form: <property object at 0x7f76f8c79db8>
Docstring:
Content of the response, in unicode.
If Response.encoding is None, encoding will be guessed using
``chardet``.
The encoding of the response content is determined based solely on HTTP
headers, following RFC 2616 to the letter. If you can take advantage of
non-HTTP knowledge to make a better guess at the encoding, you should
set ``r.encoding`` appropriately before accessing this property.