高手请进如何进行http参数传递编码 ( 积分: 47 )

  • 主题发起人 主题发起人 sunjunfeng4
  • 开始时间 开始时间
S

sunjunfeng4

Unregistered / Unconfirmed
GUEST, unregistred user!
一个远程服务器给我提供了接口,我要用http请求的形式传递一些参数给远程,格式就是
http://www.xxx.com?s_name=张成
然后我就把要传递的参数字串合成好了,用shellExecute调用IE访问http://www.xxx.com?s_name=张成 ,可是远程运不能识别这个参数;然后我在IE里用<form>表单的形式去测试
<form action=www.xxx.com methon=get>
<input Type="text" Name="S_Name" value="<%=s_name%>">
<input Type="submit" Name="submit" value="NPS在线支付">
</form>
这样的的方式,输入一样的字符'张成' 就可以成功接受,然后我发现浏览器上的编码却变成了S_Name=%25E5%25BC%25A0%25E6%2588%2590
也就是说把'张成' 编码成了 '%25E5%25BC%25A0%25E6%2588%2590'才能 接受,那么这一过程在delpi怎么把汉字变成这种可以识别的编码,有没有现成的东西可以用?,希望各位指点
 
发现了个新问题,同样是在IE上访问 汉字'张成'URL编译却出现了两种
%E5%BC%A0%E6%88%90 错误的
%25E5%25BC%25A0%25E6%2588%2590 正确
现在是我得到了错误的 编码如何弄正确
 
Function UrlDecode(Url : String; Has25 : Boolean):String;
var
I : Integer;
B : Char;
begin
Result := '';
Url := AnsiToUtf8(Url);
for I := 1 to Length(Url) do
begin
B := url;
if B in [#33..#126] then
Result := Result + B
else
if Has25 then
Result := Result + Format('%%25%x',[Ord(B)])
else
Result := Result + Format('%%%x',[Ord(B)]);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.text := UrlDecode('http://www.xxx.com?s_name=张成', True);
end;
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
811
import
I
后退
顶部