关于url编码解码encode/decode的问题 50分 大家帮忙解答 ( 积分: 50 )

  • 主题发起人 主题发起人 ki11er
  • 开始时间 开始时间
K

ki11er

Unregistered / Unconfirmed
GUEST, unregistred user!
是这样的

最近http://www.google.com/search?hl=zh-CN&q=%E9%98%B2%E9%9D%99%E7%94%B5&lr=

写一个方便GG搜索的小工具

一个edit 一个webbrowser 一个button

要输入edit后 点button的时候 先把输入的内容转为编码

然后再进行浏览

如“防静电”转化为“%E9%98%B2%E9%9D%99%E7%94%B5”

这个是怎么实现的

另外 希望知情者给出 互换的代码 或比较完整的代码 谢谢
 
是这样的

最近http://www.google.com/search?hl=zh-CN&q=%E9%98%B2%E9%9D%99%E7%94%B5&lr=

写一个方便GG搜索的小工具

一个edit 一个webbrowser 一个button

要输入edit后 点button的时候 先把输入的内容转为编码

然后再进行浏览

如“防静电”转化为“%E9%98%B2%E9%9D%99%E7%94%B5”

这个是怎么实现的

另外 希望知情者给出 互换的代码 或比较完整的代码 谢谢
 
uses
httpapp;
function HTTPDecode(const AStr: String): string;
function HTTPEncode(const AStr: String): string;
 
你先看看这里——>http://blog.77169.com/more.asp?name=ALiWY&id=28429
是不是像这个东西的?
 
都没有完整的源代码吗

程序网上有 但没有源代

我不知道如何实现 希望知情告之
 
你先看看这里——>http://blog.77169.com/more.asp?name=ALiWY&id=28429
是不是像这个东西的?
类似

字母等都一样 就是中文不一样

类于 “中”的解码是%D6%D0

而我要的 “中”的解码是%E4%B8%AD

完全不一样的
 
class function TPsURL.PathEncode(const ASrc: string): string;
const
UnsafeChars = ['*', '#', '%', '<', '>', '+', ' ']; {do not localize}
var
i : Integer;
begin
Result := ''; {Do not Localize}
for i := 1 to length(ASrc) do
begin
if (ASrc in UnsafeChars) or (ASrc >= #$80) or (ASrc[1] < #32) then
begin
Result := Result + '%' + IntToHex(Ord(ASrc), 2); {do not localize}
end
else
begin
Result := Result + ASrc;
end;
end;
end;
 
class function TPsURL.ParamsEncode(const ASrc: string): string;
var
i : Integer;
begin
Result := ''; {Do not Localize}
for i := 1 to length(ASrc) do
begin
if ASrc = ' ' then
begin {do not localize}
Result := Result + '+'; {do not localize}
end
else if not (ASrc in ['A'..'Z', 'a'..'z', '0'..'9']) then
begin {do not localize}
Result := Result + '%' + IntToHex(Ord(ASrc), 2); {do not localize}
end
else
begin
Result := Result + ASrc;
end;
end;
end;
还有这个,不记得是哪个了.
 
谢谢回复 我测试一下
 
先包含IDURI
然后tiduri.ParamsEncode('防静电');
Ok Good Luck
 
可以很明确的告诉楼主你所说的不是encode加密,所谓encode加密是把除几个控制符和字母数字以外的字符已%XX%XX的形式表示出来,XX+XX正好是字符的unicode编码
 
google的参数用的是url encode,不过,字符串之前已经转换成unicode的编码了!也就是首先把提问字符串转换成unicode编码,再做url encode的操作。
 
先转 UTF8 再 URI Encode:
URIEncode(UTF8Encode('防静电')); //未测试
 
感谢大家

不过说了这么多能给具体的完整代码吗

我再试试
 
先转 UTF8 再 URI Encode:
URIEncode(UTF8Encode('防静电')); //未测试

不行 测试过
 
google的参数用的是url encode,不过,字符串之前已经转换成unicode的编码了!也就是首先把提问字符串转换成unicode编码,再做url encode的操作。

可以给出完整代码吗
 
先包含IDURI
然后tiduri.ParamsEncode('防静电');
Ok Good Luck

这个也不行 测试过
 
如果你上面测试结果不正确,可能你的操作系统不是简体中文.
procedure TForm1.Button1Click(Sender: TObject);

function URIEncode(const S: string): string;
var
I: Integer;
begin
for I := 1 to Length(S) do
Result := Result + '%' + IntToHex(Ord(S), 2);
end;

begin
ShowMessage(URIEncode(UTF8Encode('防静电')));
end;

---------------------------
Project1
---------------------------
%E9%98%B2%E9%9D%99%E7%94%B5
---------------------------
OK
---------------------------
 
savetime, 换了电脑测试了 可以用

我自己也测试了 可以 谢谢~~

发分了
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部