![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Задание кодировки для xml [D7, XP]
mr.devil © (2009-02-02 23:45:00)Здравствуте.
Есть xml-файл, в котором указана кодировка " ISO-8859-1" (<?xml version='1.0' encoding='ISO-8859-1' ?>), хотя текст там в кодировке " windows-1252". Я в своей прграмме загружаю этот документ в компонент TXMLDocumentфункцией LoadFromFile. Вместо русских символов, естственно, получется "бяка" =)
Можно ли в TXMLDocument задать кодировку в которой он будет воспринимать загружаемый функцией LoadFromFile файл?
...
// где-то тут указать в какой кодировке будет файл
XMLDocument1.LoadFromFile(OpenDialog1.FileName);
...
Медвежонок Пятачок (2009-02-03 17:01:00) [1]Я не хочу файл на диске перезаписывать )
А его и не надо перезаписывать.
Mr.Devil (2009-02-03 16:55:00) [2]
> Eraser © (03.02.09 15:20) [15]
Спасибо, буду вечером пробовать =)
Eraser (2009-02-03 15:20:00) [3]> [14] Mr.Devil © (03.02.09 14:50)
> Файлы бывают от 4 до 100 МБ.
ну это не толстые, [9] вполне подойдет.
Mr.Devil (2009-02-03 14:50:00) [4]
> 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]
А чего Вы такой злобный? ;) Я не хочу файл на диске перезаписывать )
Медвежонок Пятачок (2009-02-03 12:08:00) [5]причем после правки даже на диск сохранять не надо.
Медвежонок Пятачок (2009-02-03 12:07:00) [6]Если я попытаюсь прочитать строку из файла ReadLn'ом, а потом записать, не попытается он весь файл в память загрузить? Файлы довольно толстые...
А типа если бы с кодировкой было бы ок, то тебе было бы неважно, что TXMLDocument загрузил все в память.
А тут, как надо подправить строчку, то сразу резко стало важно.
clickmaker (2009-02-03 12:03:00) [7]windows-1252 это разве не западная европа?
Denis__ (2009-02-03 11:39:00) [8]
> StringList[0]:= '<?xml version=''1.0'' encoding=''windows-
> 1252'' ?>';XMLDocument1.XML.Text:= StringList.Text;вариант
> без проверок, без учета того что весь хмл может быть в одну
> строку... чисто для примера.
У него же файлы "толстые";)
sniknik (2009-02-03 00:43:00) [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;
вариант без проверок, без учета того что весь хмл может быть в одну строку... чисто для примера.
Eraser (2009-02-03 00:40:00) [10]> [7] Mr.Devil © (03.02.09 00:34)
если файлы толстые, то это проблема, т.к. ISO-8859-1 короче, чем windows-1252. можно попробовать вообще
encoding='ISO-8859-1'
заменять на пробелы (удобнее через TFileStream), а потом положиться на автоматику, но надо эксперементировать.
вообще на сколько толстые файлы?
Mr.Devil (2009-02-03 00:34:00) [11]Если я попытаюсь прочитать строку из файла ReadLn'ом, а потом записать, не попытается он весь файл в память загрузить? Файлы довольно толстые...
Eraser (2009-02-03 00:26:00) [12]> [5] Mr.Devil © (03.02.09 00:23)
а в чем сложность автоматизации? ) трудно открыть файл, найти там в первой строке encoding='ISO-8859-1' и заменить на нужную? )
Mr.Devil (2009-02-03 00:23:00) [13]Я сейчас так и делаю, но делать это приходится часто. Хотелось бы как-то автоматизироать этот процесс )
Eraser (2009-02-03 00:20:00) [14]> [2] Mr.Devil © (03.02.09 00:02)
> Где править? В самом файле?
да именно в файле. вручную.
Mr.Devil (2009-02-03 00:19:00) [15]Если написать так:
XMLDocument1.Encoding:='windows-1252';
XMLDocument1.LoadFromFile(OpenDialog1.FileName);
То это не помогает. После LoadFromFile все настройки игнорируются =( Если сделать так:
XMLDocument1.LoadFromFile(OpenDialog1.FileName);
XMLDocument1.Encoding:='windows-1252';
То на загруженные значения это не влияет...
Mr.Devil (2009-02-03 00:02:00) [16]
> во-первых, нужно подправить программу, создающую XML, чтобы
> не было так, что написано одно, а по-факту - другое.
xml делаю не я и мне на мой протест ответили, что им так удобнее и у них все работает )
> во-вторых проще править атрибут encoding непосредственно
> перед загрузкой.
Где править? В самом файле? XMLDocument1 до загрузки =nil )
Eraser (2009-02-02 23:55:00) [17]> [0] mr.devil (02.02.09 23:45)
во-первых, нужно подправить программу, создающую XML, чтобы не было так, что написано одно, а по-факту - другое.
во-вторых проще править атрибут encoding непосредственно перед загрузкой.