Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];

Вниз

Задание кодировки для xml   Найти похожие ветки 

 
mr.devil   (2009-02-02 23:45) [0]

Здравствуте.
Есть xml-файл, в котором указана кодировка "ISO-8859-1" (<?xml version="1.0" encoding="ISO-8859-1" ?>), хотя текст там в кодировке "windows-1252". Я в своей прграмме загружаю этот документ в компонентTXMLDocument функцией LoadFromFile. Вместо русских символов, естственно, получется "бяка" =)
Можно ли в TXMLDocument задать кодировку в которой он будет воспринимать загружаемый функцией LoadFromFile файл?


...
// где-то тут указать в какой кодировке будет файл
XMLDocument1.LoadFromFile(OpenDialog1.FileName);
...


 
Eraser ©   (2009-02-02 23:55) [1]

> [0] mr.devil   (02.02.09 23:45)

во-первых, нужно подправить программу, создающую XML, чтобы не было так, что написано одно, а по-факту - другое.
во-вторых проще править атрибут encoding непосредственно перед загрузкой.


 
Mr.Devil ©   (2009-02-03 00:02) [2]


> во-первых, нужно подправить программу, создающую XML, чтобы
> не было так, что написано одно, а по-факту - другое.

xml делаю не я и мне на мой протест ответили, что им так удобнее и у них все работает )

> во-вторых проще править атрибут encoding непосредственно
> перед загрузкой.

Где править? В самом файле? XMLDocument1 до загрузки =nil )


 
Mr.Devil ©   (2009-02-03 00:19) [3]

Если написать так:

   XMLDocument1.Encoding:="windows-1252";
   XMLDocument1.LoadFromFile(OpenDialog1.FileName);

То это не помогает. После LoadFromFile все настройки игнорируются =( Если сделать так:

   XMLDocument1.LoadFromFile(OpenDialog1.FileName);
   XMLDocument1.Encoding:="windows-1252";

То на загруженные значения это не влияет...


 
Eraser ©   (2009-02-03 00:20) [4]

> [2] Mr.Devil ©   (03.02.09 00:02)


> Где править? В самом файле?

да именно в файле. вручную.


 
Mr.Devil ©   (2009-02-03 00:23) [5]

Я сейчас так и делаю, но делать это приходится часто. Хотелось бы как-то автоматизироать этот процесс )


 
Eraser ©   (2009-02-03 00:26) [6]

> [5] Mr.Devil ©   (03.02.09 00:23)

а в чем сложность автоматизации? ) трудно открыть файл, найти там в первой строке encoding="ISO-8859-1" и заменить на нужную? )


 
Mr.Devil ©   (2009-02-03 00:34) [7]

Если я попытаюсь прочитать строку из файла ReadLn"ом, а потом записать, не попытается он весь файл в память загрузить? Файлы довольно толстые...


 
Eraser ©   (2009-02-03 00:40) [8]

> [7] Mr.Devil ©   (03.02.09 00:34)

если файлы толстые, то это проблема, т.к. ISO-8859-1 короче, чем windows-1252. можно попробовать вообще
encoding="ISO-8859-1"
заменять на пробелы (удобнее через TFileStream), а потом положиться на автоматику, но надо эксперементировать.
вообще на сколько толстые файлы?


 
sniknik ©   (2009-02-03 00:43) [9]

> Если написать так:
>    XMLDocument1.Encoding:="windows-1252";
>    XMLDocument1.LoadFromFile(OpenDialog1.FileName);
> То это не помогает.

StringList.LoadFromFile(OpenDialog1.FileName);
StringList[0]:= "<?xml version=""1.0"" encoding=""windows-1252"" ?>";
XMLDocument1.XML.Text:= StringList.Text;

вариант без проверок, без учета того что весь хмл может быть в одну строку... чисто для примера.


 
Denis__ ©   (2009-02-03 11:39) [10]


> StringList[0]:= "<?xml version=""1.0"" encoding=""windows-
> 1252"" ?>";XMLDocument1.XML.Text:= StringList.Text;вариант
> без проверок, без учета того что весь хмл может быть в одну
> строку... чисто для примера.

У него же файлы "толстые";)


 
clickmaker ©   (2009-02-03 12:03) [11]

windows-1252 это разве не западная европа?


 
Медвежонок Пятачок ©   (2009-02-03 12:07) [12]

Если я попытаюсь прочитать строку из файла ReadLn"ом, а потом записать, не попытается он весь файл в память загрузить? Файлы довольно толстые...

А типа если бы с кодировкой было бы ок, то тебе было бы неважно, что TXMLDocument загрузил все в память.

А тут, как надо подправить строчку, то сразу резко стало важно.


 
Медвежонок Пятачок ©   (2009-02-03 12:08) [13]

причем после правки даже на диск сохранять не надо.


 
Mr.Devil ©   (2009-02-03 14:50) [14]


> Eraser ©   (03.02.09 00:40) [8]

Это про кодировку =)
http://ru.wikipedia.org/wiki/ISO-8859-1
Файлы бывают от 4 до 100 МБ.

> sniknik ©   (03.02.09 00:43) [9]

Спасибо попробую.

> Медвежонок Пятачок ©   (03.02.09 12:07) [12]

А чего Вы такой злобный? ;) Я не хочу файл на диске перезаписывать )


 
Eraser ©   (2009-02-03 15:20) [15]

> [14] Mr.Devil ©   (03.02.09 14:50)


> Файлы бывают от 4 до 100 МБ.

ну это не толстые, [9] вполне подойдет.


 
Mr.Devil ©   (2009-02-03 16:55) [16]


> Eraser ©   (03.02.09 15:20) [15]

Спасибо, буду вечером пробовать =)


 
Медвежонок Пятачок ©   (2009-02-03 17:01) [17]

Я не хочу файл на диске перезаписывать )

А его и не надо перезаписывать.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.067 c
15-1232538663
Сергей М.
2009-01-21 14:51
2009.03.29
AOL ICQ - очередная засада


2-1234250798
Iriss
2009-02-10 10:26
2009.03.29
наследник TObjectList


2-1234160852
_Unname_
2009-02-09 09:27
2009.03.29
Вопрос по синхронизации!


15-1232691373
Труп Васи Доброго
2009-01-23 09:16
2009.03.29
Поиск по "иерархической" БД


15-1232491734
XentaAbsenta
2009-01-21 01:48
2009.03.29
"благодаря использованию XML" (с)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский