将URL地址还原成中文的算法 ( 积分: 100 )

  • 主题发起人 主题发起人 fftou
  • 开始时间 开始时间
F

fftou

Unregistered / Unconfirmed
GUEST, unregistred user!
比如我在IE的地址中输入 http://www.baidu.com/?测试
经过IE处理后地址变成了 http://www.baidu.com%3F%B2%E2%CA%D4/
请问我该如果将 http://www.baidu.com%3F%B2%E2%CA%D4/ 还原成 http://www.baidu.com/?测试 呢?
 
比如我在IE的地址中输入 http://www.baidu.com/?测试
经过IE处理后地址变成了 http://www.baidu.com%3F%B2%E2%CA%D4/
请问我该如果将 http://www.baidu.com%3F%B2%E2%CA%D4/ 还原成 http://www.baidu.com/?测试 呢?
 
下面这个算法不对 得出的结果不正确
function UrlDecode(ASrc: string): string;
var
i: integer;
ESC: string[2];
CharCode: integer;
begin
Result := ''; {Do not Localize}
ASrc := StringReplace(ASrc, '+', ' ', [rfReplaceAll]); {do not localize}
i := 1;
while i <= Length(ASrc) do begin
if ASrc <> '%' then begin {do not localize}
Result := Result + ASrc
end else begin
Inc(i); // skip the % char
ESC := Copy(ASrc, i, 2); // Copy the escape code
Inc(i, 1); // Then skip it.
try
CharCode := StrToInt('$' + ESC); {do not localize}
if (CharCode > 0) and (CharCode < 256) then begin
Result := Result + Char(CharCode);
end;
except end;
end;
Inc(i);
end;
end;
 
请注意页面,页面可能是uft-8编码的!如果是这样,转换回来的string还要做utf8ToString转换。
 
IdGlobal单元里面有urldecode
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
824
DelphiTeacher的专栏
D
后退
顶部