Показать сообщение отдельно
  #1  
Старый 27.06.2017, 10:22
Jeka800 Jeka800 вне форума
Прохожий
 
Регистрация: 22.01.2012
Сообщения: 3
Репутация: 10
По умолчанию Delphi TClientDataSet utf-8

Добрый день, коллеги.

Необходимо использовать казахскую кодировку в программе на Delphi.

Данные передаются ввиде xml-файла в oIntermediateStream и загружаются TClientDataSet.
Код:
   oIntermediateStream : TStringStream;
 
   oClient := TClientDataSet.Create(MainOpScr);
   oClient.LoadFromStream(oIntermediateStream);

Проблема в том, что в базе (ACCESS) символ қ (казахская к), к примеру, отображается в виде двух символов Т›. Создается впечатление, что функция LoadFromStream грузит в кодировке Windows, а не как utf-8.

Если вставить этот символ через буфер обмена, то буква отображается нормально.

Xml-файл выглядит так (в кодировке windows):

<?xml version="1.0" encoding="utf-8" standalone="yes"?><Write set="TableName"><DATAPACKET Version="2.0"><METADATA><FIELDS><FIELD attrname="name1" fieldtype="bin.hex" SUBTYPE="Text" WIDTH="1" /></FIELDS></METADATA><ROWDATA><ROW name1="Т>" /></ROWDATA></DATAPACKET></Write>

В браузере этот файл отображает нормально букву қ.

Вопрос собственно КАК загрузить то? Сейчас смотрю в сторону TXMLTransformProvider, но пока не разобрался...
Ответить с цитированием