Использование fcl-xml с lcl, проблема кодировки

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Использование fcl-xml с lcl, проблема кодировки

Сообщение Odyssey » 08.05.2010 17:50:45

Есть следующая проблема: fcl-xml, а именно dom.pp работает с WideString(USC-2/UTF-16), а LCL - с UTF8. В результате приходится заворачивать всю работу с XML в Utf8Encode/Utf8Decode. Хотелось бы этого избежать. В codetools для этой цели сделали свою версию dom.pp (laz_dom.pp) но похоже, что она здорово устарела по сравнению с dom.pp из FPC 2.4.0.

Решал ли кто-нибудь эту проблему? Может быть, возможно небольшим изменением dom.pp добиться прозрачной работы с UTF-8 без постоянной перекодировки?
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Использование fcl-xml с lcl, проблема кодировки

Сообщение Vadim » 08.05.2010 21:09:31

А поподробнее? Вы не можете работать со значениями узлов или с названиями узлов, которые в UTF-8?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Использование fcl-xml с lcl, проблема кодировки

Сообщение Odyssey » 08.05.2010 22:01:42

Нет, я могу работать со всем, чем нужно, но неудобно. Например, вместо
Код: Выделить всё
Edit1.Text := myElement['name'];
// приходится писать
Edit1.Text := UTF8Encode(myElement['name']);
// и наоборот, вместо
myElement['name'] := Edit1.Text;
// приходится делать так:
myElement['name'] := UTF8Decode(Edit1.Text);

Хотелось бы избавиться от UTF8Encode/UTF8Decode в своём коде модификацией dom.pp. Вот и интересуюсь, не было ли это сделано до меня. Точнее я знаю что было, в codetools, но этот вариант уже устарел. Возможно кто-то делал то же самое с более новой версией dom.pp.

P.S. Имелись в виду, конечно, значения узлов, которые в моём коде в UTF8. Названия узлов у меня в диапазоне ASCII, так что с ними проблем нет.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Использование fcl-xml с lcl, проблема кодировки

Сообщение Vadim » 09.05.2010 06:25:59

А, понятно.
Добавьте в строку USES модуль cwstring, тогда будут нормально русские буквы отображаться без перекодировки.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Использование fcl-xml с lcl, проблема кодировки

Сообщение Odyssey » 09.05.2010 22:58:38

cwstring - это не то, что нужно, он обеспечивает автоматическое преобразование между ansistring и widestring только под POSIX системами, а мне нужно "автоматизировать" преобразование между utf-8 и widestring под всеми системами, включая Windows.

Насколько я знаю, это можно сделать только модификацией модулей DOM/XMLWrite/XMLRead. Похоже, что никто этого пока никто не делал, значит придётся разобраться самому или пока остаться на SimpleXML.
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Использование fcl-xml с lcl, проблема кодировки

Сообщение Vadim » 10.05.2010 05:14:31

Odyssey писал(а):включая Windows.

У меня под Windows работает без перекодировки. Я думал у Вас только в unix были проблемы...

Добавлено спустя 1 час 38 минут 29 секунд:
А, нет, извиняюсь. Это у меня в консольном приложении было - читаю значения в UTF-8, а вывод, без всякой перекодировки, идёт в 1251...
------------
Надо, наверное, сделать такой же WideStringManager и так же его подключать при работе с WideString, тем более, что iconv для Windows тоже есть, наверное переделка будет не сильно сложной.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 39

Рейтинг@Mail.ru