将字符串转换成 UTF8 编码的函数


这种转换一般用于网页地址; 我不知道 Delphi 是不是有现成的函数, 用到了就写了一个.


//函数:

function ToUTF8Encode(str: string): string;

var

  b: Byte;

begin

  for b in BytesOf(UTF8Encode(str)) do

    Result := Format('%s%%%.2x', [Result, b]);

end;



//测试:

var

  str: string;

begin

  str := '万一';

  str := ToUTF8Encode(str);

  ShowMessage(str); //%E4%B8%87%E4%B8%80

end;


 
   

为 "小月124" 写了个反向函数:

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;



{ 调用测试 }

procedure TForm1.FormCreate(Sender: TObject);

var

  s1: AnsiString;

  s2: WideString;

begin

  s1 := '%E4%B8%87%E4%B8%80';

  s2 := ToUTF8Decode(s1);

  ShowMessage(s2); { 万一 }

end;


 
   

你可能感兴趣的:(utf8)