Форум: "Начинающим";
Текущий архив: 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.48 MB
Время: 0.044 c