![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Кодировка XML [D7, XP]
mfender © (2009-09-16 16:40:00)Здравствуйте!
Создаю IXMLDocument из файла. В голове XML написано encoding="iso-8859-1". Соответственно, весь текст выглядит буквально следующим образом:
ÐÎÑÍÎ ïðîäîëæèò â 2010 ãîäó ñòðàõîâàòü ñîòðóäíèêîâ "ÐóñÃèäðî"
* ÐÎÑÑÈß * ÐÓÑÃÈÄÐÎ * ÑÒÐÀÕÎÂÊÀ * ÑÎÒÐÓÄÍÈÊÈ *
...и т.д...
Что нужно сделать, чтобы получить нормальный текст? Получаю RSS из другого источника - всё нормально, записываю в БД без каких-либо преобразований.
Спасибо.
Плохиш (2009-09-24 21:49:00) [1]
> mfender (24.09.09 17:42) [15]
Смотри, заголовок не обязан отделяться от остального текста переводом строки.
sniknik (2009-09-24 17:52:00) [2]> Хм, эта фича такая "мелкомягкого объекта"? Или всё-таки все объекты для обработки xml поддерживают стандарт?
не все, оттого и проблемы. некоторые считают, что заголовок "чисто для красоты" и кодировку указывают не реальную, а "покрасивше выглядевшею".
mfender (2009-09-24 17:42:00) [3]это, конечно, извиняюсь, задница, но вот такой обходной маневр дал требуемый результат:
ST := TStringList.Create;
ST.LoadFromFile(Resolve[I]);
ST[0] := '<?xml version="1.0" encoding="windows-1251"?>';
XMLDoc := TXMLDocument.Create(nil);
XMLDoc.LoadFromXML(ST.Text);
mfender (2009-09-24 17:23:00) [4]
> Для начала можно попросить "нормальных людей" использовать
> стандарты при создании xml.
уже с пол-месяца пытаюсь дозвониться. целая толпа каких-то чиновников переводят с одного телефона на другой, гоняют часами по кругу, а в результате кто-то просто не берёт трубку и приходится звонить заново на следующий круг.
[шёпотом]: контора называется РИА-Новости - информационное агентство, которое призвано к оперативности и всезнанию )))))
Плохиш (2009-09-24 17:02:00) [5]
> mfender (24.09.09 16:39) [11]
> застрэлиться, что-ли?....
>
Для начала можно попросить "нормальных людей" использовать стандарты при создании xml.
Плохиш (2009-09-24 17:01:00) [6]
> sniknik © (24.09.09 14:49) [8]
>
> > открываю notepad'ом и пишу encoding="windows-1251". После
> чего в IE всё становится нормально.
> > как-то это у меня плохо в голове укладывается....
> похоже создан "левыми" методами, а то и "руками", в заголовке
> указана неправильная кодировка, не соответствующая тому
> в которой текст "тела", при чтении мелкомягкий объектпо
> информации из заголовка конвертирует то, что в конвертации
> не нуждается... и все дела.
Хм, эта фича такая "мелкомягкого объекта"? Или всё-таки все объекты для обработки xml поддерживают стандарт?
И по какому принципу определяют необходимость конвертации не "мелкомягкие объекты"?
mfender (2009-09-24 16:39:00) [7]да разниы никакой. ну сделал я
XMLDoc := TXMLDocument.Create(<тут адрес>);
такая же фигня.
сделал
XMLDoc := TXMLDocument.Create(nil);
XMLDoc.LoadFromFile(адрес);
то же самое.
застрэлиться, что-ли?....
Медвежонок Пятачок (2009-09-24 16:05:00) [8]и чего?
грузи с фтп. методу load() разницы нет никакой
mfender (2009-09-24 15:36:00) [9]
> Загружать xmldoc прямо с веб ресурса с рсс не пробовал?
> (как все нормальные люди делают)
если бы нормальные люди делали rss и давали бы его как нормальные люди... но они скидывают его нам на FTP, и содержимое его на RSS совсем не похоже.
sniknik (2009-09-24 14:49:00) [10]> открываю notepad'ом и пишу encoding="windows-1251". После чего в IE всё становится нормально.
> как-то это у меня плохо в голове укладывается....
похоже создан "левыми" методами, а то и "руками", в заголовке указана неправильная кодировка, не соответствующая тому в которой текст "тела", при чтении мелкомягкий объект по информации из заголовка конвертирует то, что в конвертации не нуждается... и все дела.
Медвежонок Пятачок (2009-09-24 14:23:00) [11]я ж не в IE его смотрю, а создаю из него объект:
XMLDoc := LoadXMLData(TStringList(Resolve.Items[I]).Text);
Загружать xmldoc прямо с веб ресурса с рсс не пробовал? (как все нормальные люди делают)
mfender (2009-09-24 14:09:00) [12]Да, так вот, продолжаю тему. ))))
В IE такая же кракозябра
ÐÎÑÍÎ ïðîäîëæèò â 2010 ãîäó ñòðàõîâàòü ñîòðóäíèêîâ "ÐóñÃèäðî"
открываю notepad'ом и пишу encoding="windows-1251". После чего в IE всё становится нормально.
как-то это у меня плохо в голове укладывается....
palva (2009-09-16 18:23:00) [13]
> я ж не в IE его смотрю, а создаю из него объект
Ну раз ты написал, что "текст выглядит", значит ты его в чем-то смотришь. А если ты его не смотришь, тогда вопрос становится непонятным.
> Что нужно сделать, чтобы получить нормальный текст?
этот вопрос я понял так: "что нужно сделать, чтобы увидеть русские буквы". Но судя по заголовку твоего файла xml в нем не может быть русских букв. Там могут быть буквы разных европейских языков, которые по кодировке совпадают с русскими буквами. Эти европейские буквы ты и видишь, когда открываешь файл в IE.
Короче, мне непонятно, в чем заключается вопрос.
clickmaker (2009-09-16 17:30:00) [14]> Что нужно сделать, чтобы получить нормальный текст?
iso-8859-5
sniknik (2009-09-16 17:29:00) [15]> я ж не в IE его смотрю
а ты посмотри...
объект это кстати мелкосовтский, т.е. если нормально там, то и тут он отработает нормально.
> XMLDoc := LoadXMLData(TStringList(Resolve.Items[I]).Text);
???
через стринглист/стандартный стринг с автоприведением? ну так сам виноват. не выделывайся возьми TXMLDocument и пропиши у него FileName, хотя бы для теста.
mfender (2009-09-16 17:16:00) [16]я ж не в IE его смотрю, а создаю из него объект:
XMLDoc := LoadXMLData(TStringList(Resolve.Items[I]).Text);
где XMLDoc - IXMLDocument.
palva (2009-09-16 16:52:00) [17]При encoding="iso-8859-1" это и есть нормальный текст. При показе в IE он так и должен выглядеть. Чтобы увидеть русские буквы нужен файл с указанием той кодировки которой эти русские буквы закодированы.