Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > как декодировать урл


Автор: kulibinka 16.2.2007, 05:27
в лог-файле вылезло такое: 

'91.124.107.8 - - [13/Feb/2007:08:06:56 +0000] "GET / HTTP/1.1" 200 26623 "http://www.google.com.ua/search?client=firefox-a&rls=org.mozilla%3Aru%3Aofficial&channel=s&hl=ru&q=%D0%A0%D0%B0%D0%B7%D0%B2%D0%B8%D1%82%D0%B8%D0%B5+%D0%B2%D0%BD%D0%B8%D0%BC%D0%B0%D0%BD%D0%B8%D1%8F+%D1%83+%D0%B4%D0%BE%D1%88%D0%BA%D0%BE%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA%D0%BE%D0%B2&meta=&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google" "Mozilla/5.0 (Windows; U; Windows NT 5.0; ru; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"'

разбираясь по какому же запросу оно ко мне попало, пытаюсь декодировать строку:

Код

import urllib

s = '91.124.107.8 - - [13/Feb/2007:08:06:56 +0000] "GET / HTTP/1.1" 200 26623 "http://www.google.com.ua/search?client=firefox-a&rls=org.mozilla%3Aru%3Aofficial&channel=s&hl=ru&q=%D0%A0%D0%B0%D0%B7%D0%B2%D0%B8%D1%82%D0%B8%D0%B5+%D0%B2%D0%BD%D0%B8%D0%BC%D0%B0%D0%BD%D0%B8%D1%8F+%D1%83+%D0%B4%D0%BE%D1%88%D0%BA%D0%BE%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA%D0%BE%D0%B2&meta=&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google" "Mozilla/5.0 (Windows; U; Windows NT 5.0; ru; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"'

s = urllib.unquote(s)
s.decode('cp1251')
print s

f = open('file.txt', 'w')
f.write(s)
f.close()


а в файл все равно пишется в кодировке утф-8, а хочется в 1251.
что я делаю не так?

Автор: diam 16.2.2007, 08:14
Цитата(kulibinka @  16.2.2007,  08:27 Найти цитируемый пост)
что я делаю не так? 

Код

s = urllib.unquote(s).encode('cp1251')

Автор: kulibinka 16.2.2007, 13:39
Да если бы... ошибка вылазит 


Код

    text = urllib.unquote(text).encode(coding_to)
  File "C:\Python24\lib\encodings\cp1251.py", line 18, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)

Автор: pythonwin 16.2.2007, 14:08
kulibinka, посмотри http://www.rupy.ru/member/5/#paper-6 может пригодиться

Автор: kulibinka 16.2.2007, 23:22
pythonwin, спасибо smile
Поборол.

Вот рабочий код:

Код

import urllib

s = '91.124.107.8 - - [13/Feb/2007:08:06:56 +0000] "GET / HTTP/1.1" 200 26623 "http://www.google.com.ua/search?client=firefox-a&rls=org.mozilla%3Aru%3Aofficial&channel=s&hl=ru&q=%D0%A0%D0%B0%D0%B7%D0%B2%D0%B8%D1%82%D0%B8%D0%B5+%D0%B2%D0%BD%D0%B8%D0%BC%D0%B0%D0%BD%D0%B8%D1%8F+%D1%83+%D0%B4%D0%BE%D1%88%D0%BA%D0%BE%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA%D0%BE%D0%B2&meta=&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google" "Mozilla/5.0 (Windows; U; Windows NT 5.0; ru; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"'

s = urllib.unquote(s)
s = s.decode('utf-8')
s = s.encode('cp1251')

f = open('file.txt', 'w')
f.write(s)
f.close()

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)