欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;

内容参考网络。

相关标签: utf8