Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TXMLDocument проблема с кодировкой [D7, XP]


Очень Злой ©   (2013-02-11 11:42:00) 

...
   EDDirname: TEdit;
...
var
xnode:IXMLNode;
vnode:IXMLNode;
mainnode:IXMLNode;
begin
 with TXMLDocument.Create(self) do
 try
   Active:=true;
...
   mainNode:=AddChild('DECLAR');
...
   xnode:=mainnode.AddChild('DECLARHEAD');
...
   xnode.AddChild('HBOS').Text:=EDDirName.Text;
...
   SaveToFile(outfilename);
  Active:=false;
finally
 free;
end;
...


В итоге нужная строка в полученном xml-файле имеет 16-битную кодировку... А мне нужна 8-битная. Как сделать?


Dimka Maslov   (2013-02-11 13:17:00) [1]



> с чего бы "должен"? что прописано то и будет. если не указано
> вообще, то будет пытаться определять как utf8.


Именно это я и имел ввиду под словом "должен". Автокодировкоопределятора никакого не предусмотрено.


sniknik   (2013-02-11 13:10:00) [2]

> О. Спасибо. Помогло.
кстати "по идее" если читать также, чем нибудь стандартным ("стандартизированным"), а не блокнотом к примеру, то пофигу в какой кодировке файл. одно из достоинств xml (если конечно никто в парсинг своими "велосипедными" методами не лезет, тогда все с точностью до наоборот).


sniknik   (2013-02-11 12:49:00) [3]

> то он дожен определять кодировку сам и корректно её отображать.
с чего бы "должен"? что прописано то и будет. если не указано вообще, то будет пытаться определять как utf8.


Dimka Maslov   (2013-02-11 12:45:00) [4]


> Очень Злой   (11.02.13 12:33) [9]


А я почём знаю, какая именно разновидность TXMLDocument используется, их много. Но если парсер у принимающей стороны адекватный то он дожен определять кодировку сам и корректно её отображать. Тем более, что UTF-8 вроде как стандарт и кодировка по умолчанию.


Очень Злой   (2013-02-11 12:40:00) [5]


> Медвежонок Пятачок ©   (11.02.13 12:32) [8]
>
> property : Encoding


О. Спасибо. Помогло.


Очень Злой   (2013-02-11 12:33:00) [6]


> Dimka Maslov ©   (11.02.13 12:15) [7]
>
> Вот с этого и надо было начинать. Сохраняем файл, читаем
> его через TStringList и сохраняем в нужной кодировке, не
> забыв её перепрописать в заголовке xml. А вообще, чтобы
> работало везде и правильно, про Windows-1251 надо забыть,
>  как в своё время забыли про DOS-866.


Т.е. средствами самого TXMLDocument  нельзя сразу создавать в нужной кодировке?

А насчет Windows-1251 - это не я придумал.
Хотя можно попробовать подсунуть им и в UTF-8, не знаю, воспримет ли...
Может и не придется заморачиваться с Windows-1251...


Медвежонок Пятачок   (2013-02-11 12:32:00) [7]

property : Encoding


Dimka Maslov   (2013-02-11 12:15:00) [8]

Вот с этого и надо было начинать. Сохраняем файл, читаем его через TStringList и сохраняем в нужной кодировке, не забыв её перепрописать в заголовке xml. А вообще, чтобы работало везде и правильно, про Windows-1251 надо забыть, как в своё время забыли про DOS-866.


Очень Злой   (2013-02-11 12:14:00) [9]


> Что это за вид? Я такой кодировки не знаю.


windows-1251


Очень Злой   (2013-02-11 12:12:00) [10]

Вобщем вместо UTF-8 мне нужна windows-1251


Dimka Maslov   (2013-02-11 12:12:00) [11]

Что это за вид? Я такой кодировки не знаю.


Очень Злой   (2013-02-11 12:08:00) [12]


> Не бывает ни 16-битной, 8-битной кодировок. У них у всех
> есть вполне определённые названия и характеристики.


Ну вроде получается UTF-8, русские буквы кодируются двумя байтами...

А мне нужно чтобы строка например "Вася Пупкин" имела такой вид:

C2 E0 F1 FF 20 CF F3 EF EA E8 ED


Плохиш   (2013-02-11 12:04:00) [13]


> Очень Злой   (11.02.13 11:42)

Не царское это дело хелпы читать.


Dimka Maslov   (2013-02-11 11:49:00) [14]

Не бывает ни 16-битной, 8-битной кодировок. У них у всех есть вполне определённые названия и характеристики.


Наверх

Титульная страница Поиск, карта сайта Написать письмо