Главная страница
    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.48 MB
Время: 0.041 c
2-1234270641
Alex_Ford
2009-02-10 15:57
2009.03.29
Ping - Программно


2-1233346301
Johnnnn
2009-01-30 23:11
2009.03.29
Доступ к чужому TChart возможен ли?


15-1232828671
Четыре
2009-01-24 23:24
2009.03.29
Глюк Дельфи7


2-1233394030
Новичек
2009-01-31 12:27
2009.03.29
Установка текста в другом приложении.


6-1200853816
Gbp
2008-01-20 21:30
2009.03.29
Странная трабла моего локального прокси с гуглом





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский