TClientDataSet load utf-8 data
От: simple_man Россия  
Дата: 27.06.17 06:14
Оценка:
Добрый день, коллеги.

Необходимо использовать казахскую кодировку в программе на 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, но пока не разобрался...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.