parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

есть один подводный камень при подобном подходе (уже споминался несколько раз)

Misha v.3 12.09.2007 14:07

если rss/xml формируется в зависимости от отправляемых при http запросе данных, то в случае с binary они не будут перекодироваться, соотв. отправить русские буквы цивилизованным способом невозможно.

если грузить в режиме text, то отправляемые поля будут перекодированы, но и пришедший обратно текст также будет перекодирован обратно, но это как раз и плохо, т.к. в xml declaration (это часть текста) останется <?xml encoding="старая кодировка"?>, т.е. для того чтобы из этого создать xdoc надо match-ем заменить её на нашу кодировку. это лишнее телодвижение, зато если вынести подобное в отдельный метод то это работает и в случае, если надо отправить текстовые поля.

чтобы решить описанные выше неудобства некоторое время назад в HEAD версию был добавлен ещё один конструктор xdoc: ^xdoc::create[файл], т.е. можно так:
$f[^file::load[text;http://...;
	$.form[
		$.name[Вася]
	]
	$.timeout(5)
	$.charset[UTF-8]
]
$x[^xdoc::create[$f]]
что касается "перекодирования rss": некоторые пишут свои агрегаторы (зачем -- не знаю). очевидно, что если из разных источников получили данные в разных кодировках (хотя для rss кодировка utf8 must have), то чтобы выдать данные в одну ленту что то придётся "перекодировать".