本文整理自网络,侵删。
function UrlDecode(const AStr: AnsiString): AnsiString;var Sp, Rp, Cp: PAnsiChar; s: AnsiString;begin SetLength(Result, Length(AStr)); Sp := PAnsiChar(AStr); Rp := PAnsiChar(Result); Cp := Sp; while Sp^ <> #0 do begin case Sp^ of '+': Rp^ := ' '; '%': begin // Look for an escaped % (%%) or %<hex> encoded character Inc(Sp); if Sp^ = '%' then Rp^ := '%' else begin Cp := Sp; Inc(Sp); if (Cp^ <> #0) and (Sp^ <> #0) then begin s := AnsiChar('$') + Cp^ + Sp^; Rp^ := AnsiChar(StrToInt(string(s))); end; end; end; else Rp^ := Sp^; end; Inc(Rp); Inc(Sp) end; SetLength(Result, Rp - PAnsiChar(Result));end;function UrlEncode(const AStr: AnsiString): AnsiString;const NoConversion = ['A' .. 'Z', 'a' .. 'z', '*', '@', '.', '_', '-', '0' .. '9', '$', '!', '''', '(', ')'];var Sp, Rp: PAnsiChar;begin SetLength(Result, Length(AStr) * 3); Sp := PAnsiChar(AStr); Rp := PAnsiChar(Result); while Sp^ <> #0 do begin if Sp^ in NoConversion then Rp^ := Sp^ else if Sp^ = ' ' then Rp^ := '+' else begin FormatBuf(Rp^, 3, AnsiString('%%%.2x'), 6, [Ord(Sp^)]); Inc(Rp, 2); end; Inc(Rp); Inc(Sp); end; SetLength(Result, Rp - PAnsiChar(Result));end;
相关阅读 >>
Delphi有无生成空格的函数,like vb的space(1)
Delphi的unicode与gb2312转转换,汉字unicode转gb2312
更多相关阅读请进入《Delphi》频道 >>