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