Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > wstring to UTF-8


Автор: NOCaut 15.8.2011, 14:35
Подскажите где ошибка функцию нашол в нете.
Код
var
  s: string;
begin
  s := WideStringToString('ام بنفقة كذ',CP_ACP);     на виходе: '??? ?? ?????'
  s := WideStringToString('لقرآن الكريم ',CP_UTF8);  на виходе: ''
 
function WideStringToString(const ws: WideString; codePage: Word): AnsiString;
var
  l: integer;
begin
  if ws = '' then
    Result := ''
  else
  begin
    l := WideCharToMultiByte(codePage,
      WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR,
      @ws[1], - 1, nil, 0, nil, nil);
    SetLength(Result, l - 1);
    if l > 1 then
      WideCharToMultiByte(codePage,
        WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR,
        @ws[1], - 1, @Result[1], l - 1, nil, nil);
  end;
end;

Автор: NOCaut 16.8.2011, 15:43
http://forum.sources.ru/index.php?act=ST&f=11&t=338432

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)