Yurietc
Окт. 12, 2007 19:08:45
Привет всем.
Есть сайт
http://genuinedrafting.blogspot.com/2007/04/going-public.html.Сохраняю его на диск примерно так :
>>> import urllib2
>>> s = urllib2.urlopen('
http://genuinedrafting.blogspot.com/2007/04/going-public.html').read()
>>> f=open('D:\\tmp.html', ‘w’)
>>> f.write(s)
>>> f.close()
>>> print s
ヒ
>>> print len(s)
17878
Сайт приходит в совершенно не читабельный вид (Л����� ┤VmS█8■\ КmШЫ▄їъ╪ ит.д.).Что с ним могло случиться ?
umup
Окт. 12, 2007 19:28:10
страница в кодировке ‘utf-8’, поэтому перед записью содержимого нужно записать сигнатуру utf-8 - write('\xEF\xBB\xBF').
файл лучше открывать в режиме ‘wb’.
то есть :
open('D:\\tmp.html', ‘wb’).write('\xEF\xBB\xBF' + urllib2.urlopen('
http://genuinedrafting.blogspot.com/2007/04/going-public.html').read())
shiza
Окт. 12, 2007 19:29:52
у меня все в нормальном виде скачивается при тойже последовательности действий (WindowsXP, Python 2.5.1)
>>>print len(s)
78784
Yurietc
Окт. 15, 2007 11:22:15
Спасибо, umup. Так работает.
А что за таинственное заклинание ‘\xEF\xBB\xBF’ ? Может это поможет решить проблемы с utf-8 и кирилицей ?
ZAN
Окт. 15, 2007 11:44:05
Про таинственного зверя читать здесь.
http://en.wikipedia.org/wiki/Byte_Order_MarkYurietc
Спасибо, umup. Так работает.
Может это поможет решить проблемы с utf-8 и кирилицей ?
Да, в некотором смысле.
bialix
Окт. 15, 2007 12:08:13
Yurietc
Спасибо, umup. Так работает.
А что за таинственное заклинание ‘\xEF\xBB\xBF’ ? Может это поможет решить проблемы с utf-8 и кирилицей ?
Чтобы легче заклинание было запоминать – это константа BOM_UTF8 из модуля codecs
import codecs
codecs.BOM_UTF8
umup
Окт. 15, 2007 12:12:17
проблема могла возникнуть из-за использования текстового доступа к файлу (f=open('D:\\tmp.html', ‘w’)) вместо бинарного ‘wb’.
'\xEF\xBB\xBF' - это заголовок (сигнатура) файла в кодировке utf-8, наверно необязательный, броузер должен и без нее определить кодировку из заголовка - charset=utf-8