Главная страница
    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.044 c
1-1208087201
@!!ex
2008-04-13 15:46
2009.03.29
Может ли существовать форма без Applicationа?


11-1189525265
matroskin66
2007-09-11 19:41
2009.03.29
корректное завершение


1-1208419242
312kbps
2008-04-17 12:00
2009.03.29
Событие смена активного окна в винде


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


1-1207901857
IGray
2008-04-11 12:17
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский