Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Кодировка 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 он так и должен выглядеть. Чтобы увидеть русские буквы нужен файл с указанием той кодировки которой эти русские буквы закодированы.


Наверх

Титульная страница Поиск, карта сайта Написать письмо