在HTTP协议中,浏览器不能向服务器直接传递某些特殊字符,就必须对这些字符进行URL编码再传送。
浏览器一般会以
UTF-8
和
ANSI(
当前系统语言设置
)
两种方式发送
URL
到服务器。
例如:
在
baidu
中搜索中国的结果:
http://www.baidu.com/s?wd=%D6%D0%B9%FA&cl=3
。即
[
中国
]
被解析成:
%D6%D0%B9%FA
在
google
中搜索中国的结果:
http://www.google.com/search?hl=en&q=%E4%B8%AD%E5%9B%BD
。即
[
中国
]
被解析成
%E4%B8%AD%E5%9B%BD
。
分析两个页面源代码。
baidu
使用的
charset=gb2312
字符集,即
ANSI
编码。
google
使用的是
charset=UTF-8
字符集,即
UTF-8
进行编码。
编码的规则:
1
、空格转换成为
"+"
2
、
0~9,a~z,A~z
字符表示不变。
3
、其他字符编码在以十六进制格式表示,并在每个十六进制字节上加上
[%]
对
[email:admin@xx.com *
中国
]
进行编码,在
baidu
搜索中验证结果为
:http://www.baidu.com/s?wd=email%3Aadmin@xx.com+*+%D6%D0%B9%FA&cl=3
ASP
中间对
Url
的编码解码可以使用
Server.URLEncode
和
Server.UrlDecode
来完成。
如何在
VB
中间也实现
URLEncode
和
UrlDecode
。
对[中国]编码,结果为:%D6%D0%B9%FA
'
利用Ascii转换16进位制
Private
Sub
cmdEncode_Click()
Dim
i
As
Integer
Dim
strChar
As
String
Dim
strMsg
As
String
Dim
strText
As
String
strMsg
=
"
中国
"
For
i
=
1
To
Len
(strMsg)
strText
=
strText
&
"
%
"
&
Left
(
Hex
(
Asc
(
Mid
(strMsg, i,
1
))),
2
)
&
"
%
"
&
Right
(
Hex
(
Asc
(
Mid
(strMsg, i,
1
))),
2
)
Next
Debug.Print strText
End Sub
'
利用strConv转换当前页码处理
Private
Sub
cmdEncode_Click()
Dim
strMsg
As
String
D