【发布时间】:2011-04-09 03:54:59
【问题描述】:
我想像 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 结果(相同的字符串),并且重音相同,我不会丢失不是英语 lang 的 ŐŰ。
我做错了什么?我如何做和 Python 一样的事情?
感谢您的每一个帮助、链接等: dd
【问题讨论】:
标签: delphi character-encoding encode utf