Delphi: Кодирование строк как Python

я хочу кодировать строки, как это делает Python.

Код Python такой:

def EncodeToUTF(inputstr):
  uns = inputstr.decode('iso-8859-2')
  utfs = uns.encode('utf-8')
  return utfs

Это очень просто.

Но в Delphi я не понимаю, как кодировать, чтобы сначала установите правильный набор символов (независимо от того, какой компьютер у нас есть).

Я попробовал этот тестовый код, чтобы увидеть преобразование:

procedure TForm1.Button1Click(Sender: TObject);
var
    w : WideString;
    buf : array[0..2048] of WideChar;
    i : integer;
    lc : Cardinal;
begin
    lc := GetThreadLocale;
    Caption := IntToStr(lc);
    StringToWideChar(Edit1.Text, buf, SizeOF(buf));
    w := buf;
    lc := MakeLCID(
        MakeLangID( LANG_ENGLISH, SUBLANG_ENGLISH_US),
        0);
    Win32Check(SetThreadLocale(lc));
    Edit2.Text := WideCharToString(PWideChar(w));
    Caption := IntToStr(AnsiCompareText(Edit1.Text, Edit2.Text));
end;

Ввод: "árvíztűrő tükörfúrógép", Локальный lc - 1038 (hun), новый lc - 1033.

Но это каждый раз дает 0 результатов (те же строки), и акценты такие же, я не потерял ŐŰ, который не на английском языке.

] Что я делаю не так? Как мне делать то же, что и Python?

Спасибо за любую помощь, ссылку и т. Д .: dd

5
задан Mat 29 April 2012 в 16:20
поделиться