delphi下中文转UFT-8编码
程序员文章站
2022-03-31 11:07:03
...
D10下:
function ToUTF8Encodes(str: UTF8String): string;
var
b: Byte;
begin
for b in BytesOf(str) do
Result := Format('%s%%%.2x', [Result, b]);
end;
调用:
procedure TForm1.btn13Click(Sender: TObject);
begin
ShowMessage(ToUTF8Encodes('中国'));
end;
结果:
%E4%B8%AD%E5%9B%BD
Delphi中如果没有UTF8String 这种类型的版本的解决办法如下:
function ToUTF8Encode(str: string): string;
var
b: Byte;
begin
for b in BytesOf(UTF8Encode(str)) do
Result := Format('%s%%%.2x', [Result, b]);
end;
调用这个函数即可。
将UTF-8转换回来:
function ToUTF8Decode(const str: string): string;
var
List: TStrings;
tmpStr: AnsiString;
i: Integer;
begin
List := TStringList.Create;
ExtractStrings(['%'], ['%'], PChar(str), List);
SetLength(tmpStr, List.Count);
for i := 0 to List.Count - 1 do
Byte(tmpStr[i+1]) := StrToInt('$' + List[i]);
List.Free;
Result := UTF8Decode(tmpStr);
end;
内容参考网络。