编码后的字符:%E4%BA%92%E8%81%94%E7%BD%91%E6%89%8D%E5%AD%90
解码后:互联网才子          ShowMessage('来源:互联网才子'
               + #13 +  '应该是 :%E4%BA%92%E8%81%94%E7%BD%91%E6%89%8D%E5%AD%90'
               + #13 +  '当前是1:' +   Utf8ToAnsi( UTF8Encode('互联网才子' ))
               + #13 +  '当前是2:' +  HTTPEncode('互联网才子')
               + #13 +  '当前是3:' +  HTMLEncode (AnsiString( '互联网才子'))
               + #13 +  '当前是4:' +  Utf8ToAnsi ('互联网才子')
               + #13 +  '当前是5:' +  UTF8ToString ('互联网才子')
               + #13 +  '当前是6:' +  UTF8ToUnicodeString  ('互联网才子')               );以上几个函数我都试过,可都不对。注意,是要用D2010。
谢谢

解决方案 »

  1.   

    我好像看到是 encodeURI 编码,但在Delphi里不知是什么函数。
      

  2.   


    //不知道这个是否是你要的.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.Button1Click(Sender: TObject);
    var
      s1: AnsiString;
      s2: WideString;
    begin
      s1:= '%E4%BA%92%E8%81%94%E7%BD%91%E6%89%8D%E5%AD%90';
      s2:= ToUTF8Decode(s1);
      ShowMessage(s2);
    end;
      

  3.   

    将字符串转换成 UTF8 编码的函数 //函数:
     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);
       ShowMe
    受二楼哥们的启发,找到了万一老师的一段代码,并分享之。
    谢谢二楼。