Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.03.29;
Скачать: CL | DM;

Вниз

Задание кодировки для 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.021 c
4-1206779666
kalexi
2008-03-29 11:34
2009.03.29
Как узнать с какого по какой адрес занимает процесс в системе?


2-1234270641
Alex_Ford
2009-02-10 15:57
2009.03.29
Ping - Программно


15-1232271058
visiter
2009-01-18 12:30
2009.03.29
англоязычные форумы dephi


15-1232800135
ketmar
2009-01-24 15:28
2009.03.29
подскажите аналог Valgrind под винду, бесплатный


2-1233574367
Hamyachok
2009-02-02 14:32
2009.03.29
TImage.Picture.SaveToFile