XML (UTF8) в FreeBSD

Вопросы программирования на Free Pascal, использования компилятора и утилит.

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

XML (UTF8) в FreeBSD

Сообщение rusgl » 03.06.2008 19:49:01

Доброго времени, All.
Ситуация:
Есть XML
<?xml version="1.0" encoding="UTF-8"?>
<config>
<test1 b="вот такой тест"/>
</config>

Собственно нужно добраться до значения параметра "b" во FreeBSD.
В Win без проблем, а вот в сабже "??????????????????".
Понимаю, что проблема с текущей локалью, а побороть не получается :(
rusgl
незнакомец
 
Сообщения: 4
Зарегистрирован: 03.06.2008 19:44:27

Re: XML (UTF8) в FreeBSD

Сообщение alexs » 03.06.2008 20:37:36

А физически в какой кодировке текст находится? он там точно в utf8?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: XML (UTF8) в FreeBSD

Сообщение rusgl » 03.06.2008 20:47:55

Да

<?xml version="1.0" encoding="UTF-8"?>
<config>
<test1 a="qwer Р_Р_С' С'акР_Р№ С'РчС_С'" b="qwer2 С'С_Р" Р"С_С_С_С% Р"С:С'Р""/>
</config>
rusgl
незнакомец
 
Сообщения: 4
Зарегистрирован: 03.06.2008 19:44:27

Re: XML (UTF8) в FreeBSD

Сообщение Sergei I. Gorelkin » 03.06.2008 21:22:16

Для правильного преобразования строк нужно подключать к проекту модуль cwstring.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: XML (UTF8) в FreeBSD

Сообщение rusgl » 04.06.2008 00:24:04

Код: Выделить всё
uses
  Classes, SysUtils, CustApp, dom, xmlRead
  {$IFDEF UNIX}{$IFNDEF DisableCWString}, cwstring{$ENDIF}{$ENDIF}
  ;

.....

procedure TMyApplication.DoRun;
var
  XMLDoc: TXMLDocument;
  XMLConfig: TDomNode;
  StrList: TStringList;
begin
  StrList := TStringList.Create;
  try
    GetWideStringManager(WideStringManager);
    ReadXMLFile(XMLDoc, '1.xml');

    XMLConfig := XMLDoc.FirstChild;
    WriteLn('1a' + XMLConfig.ChildNodes.Item[0].Attributes.GetNamedItem('a').NodeValue);
    WriteLn('1b' + XMLConfig.ChildNodes.Item[0].Attributes.GetNamedItem('b').NodeValue);
   
  finally
    StrList.Free;
  end;

  Terminate;
end;
Код: Выделить всё


Получаем вопросительніе знаки :(
rusgl
незнакомец
 
Сообщения: 4
Зарегистрирован: 03.06.2008 19:44:27

Re: XML (UTF8) в FreeBSD

Сообщение Sergei I. Gorelkin » 04.06.2008 01:21:30

Тут похоже надо переадресовывать вопрос знатокам FreeBSD, я о ней, к сожалению, знаю только что она есть и похожа на Linux...

Если в системе локаль UTF-8, можно напрямую перекодировать с помощью ф-ции UTF8Encode, должно работать и без cwstring. Или работать прямо в формате utf-16, в котором весь DOM и сделан.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: XML (UTF8) в FreeBSD

Сообщение rusgl » 04.06.2008 01:26:05

utf8encode отдает: ╤В╤О╨Д ╨Д╤А╤К╤О╤Й ╨Д╤Е╤С╨Д, что похоже на правду.
Но нужно именно виндовую кодировку, так как в дальнейшем эту строку нужно искать на хтмл страничке с кодировкой win1251
rusgl
незнакомец
 
Сообщения: 4
Зарегистрирован: 03.06.2008 19:44:27

Re: XML (UTF8) в FreeBSD

Сообщение Vadim » 04.06.2008 05:13:58

rusgl
Я не совсем понял, какая локаль установлена на Вашей системе?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск


Вернуться в Free Pascal Compiler

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

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

Рейтинг@Mail.ru