delphi下中文转UFT-8编码

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;

内容参考网络。

你可能感兴趣的:(delphi)