LINUX.ORG.RU

как правильно декодировать ответ QNetworkreply?


0

1

скачиваю страницу с помощью Qnetworkaccessmanager
не знаю как правильно её декодировать, при том что кодировки у страниц бывают самые разные
почему-то курл или urllib сами все декодируют, а нетворменеджеру нужны эти костыли

пока слепил вот что:

QtCore.QObject.connect(self.reply, QtCore.SIGNAL(«finished()»), self.loop.quit);
self.loop.exec()
buf = self.reply.readAll()
try:
self.last_response = bytearray(buf).decode('utf8')
except UnicodeDecodeError:
try:
self.last_response = bytearray(buf).decode('cp1251')
except:
self.last_response = bytearray(buf)

но все равно иногда вылетают ошибки:

File «C:\Users\Администратор\Desktop\goo\engine\http.py», line 192, in _reque
t
f.write('URL' + url + «\n\n» + self.last_response)
File «C:\Python32\lib\encodings\cp1251.py», line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\xe1' in position 9
342: character maps to


при том, что парсится google, который на линуксе тем же скриптом парсится нормально

как правильно декодировать не зная кодировки?
bytearray(buf).decode('cp1251')


ЗЫ как тут правильно выделить код псевдотегами?

Зачем тебе вообще здесь кутэ? Чем не устроил тот же urllib?

anonymous
()

Неблагодарное это завтре на питоне

namezys ★★★★
()

курл или urllib сами все декодируют, а нетворменеджеру нужны эти костыли

QNetworkManager - просто инструмент для работы с http/ftp, ему глубоко посрать на содержимое, будь то текст или бинарные данные.

Kosyak ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.