![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MultiByteToWideChar или другой способ перевести UTF16 LE в ANSI [D7]
NapalmRain © (2012-11-09 11:15:00)Доброго всем времени суток. Мне необходимо привести строку такого вида
http://s2.ipicture.ru/uploads/20121109/BWZuvTLM.jpg
Во что-то наиболее похожее на текст. В теории эта строка в UTF 16 Le, везде советуют использовать multibytetowidechar но нигде не смог найти примеры этой функции. Или может быть есть другой способ? Прошу подсазки
DVM (2012-11-09 12:23:00) [1]И да, кстати, именно в Ansi как написано в вопросе перевести правильно получится только если в системе текущая кодовая страница подходящая.
В WideString получится всегда.
DVM (2012-11-09 11:51:00) [2]
> но нигде не смог найти примеры этой функции
как то так, с поправкой на твою задачу разумеется:
function AnsiStringToWideString(const Src: AnsiString; CodePage: Word = 0): WideString;
var
Len: Integer;
begin
if CodePage = 0 then
CodePage := GetACP;
if Src = '' then
Result := ''
else
begin
Len := MultiByteToWideChar(CodePage, 0, PAnsiChar(Src), Length(Src), nil, 0);
if Len = 0 then
RaiseLastOSError;
SetLength(Result, Len);
Len := MultiByteToWideChar(CodePage, 0, PAnsiChar(Src), Length(Src),
PWideChar(Result), Length(Result));
if Len = 0 then
RaiseLastOSError;
end;
end;
> Или может быть есть другой способ? Прошу подсазки
В новых версиях Delphi >=2009 есть класс TEncoding им можно. Для более старых версий Delphi есть аналог TEncoding тут:
http://www.gunsmoker.ru/2010/04/delphi-2009.html