如何将一串字符(带+、-、%等字符)转换成在http协议中可以进行传送的字符,D7前TNMURL中的函数可以实现,现在没有了,有其他控件吗转换语句也可以啊

解决方案 »

  1.   

    function UrlEncode(strSource: string): string;
    var
      intSourceLen: integer;
      intForLoop: integer;
      strTemp: string;
      strDestCode: string;
      charTemp: char;
    begin
      strDestCode := '';
      intSourceLen := length(strSource);
      for intForLoop := 1 to intSourceLen do begin
        charTemp := strSource[intForLoop];
        if charTemp = ' ' then begin
          strDestCode := strDestCode + '+';
        end
        else if charTemp = #13 then begin
          strDestCode := strDestCode + '%0D%0A';
        end
        else if (charTemp < '0') or ((charTemp < 'A') and (charTemp > '9')) or
          ((charTemp > 'Z') and (charTemp < 'a')) or (charTemp > 'z') then begin
          strTemp := inttohex(ord(charTemp), 2);
          strDestCode := strDestCode + '%' + strTemp;
        end
        else begin
          strDestCode := strDestCode + charTemp;
        end;
      end;
      Result := strDestCode;
    end;
      

  2.   

    先谢 sysu(死树)UrlDeCode的函数有吗还有对于包含汉字的字符串这个函数可以吗
      

  3.   

    decode没有 :)汉字是可以的,你看看代码就知道了。
      

  4.   

    用indy里面的控件
    indy misc
    IdUUEncoder
    IdBase64Encoder
    IdUUDecoder
    IdBase64Decoder
      

  5.   

    在使用IdUUEncoder时,对于汉字字符串有时只能翻译部分,这是怎么回事