问题描述1:
strUrl = "../Message/MessageNotice.aspx?Bm=公司领导&Ks=公司领导&Url=/gczjbs /XMBsuopei.aspx?kkk=1&ddd=2&Name=王华" 其中我想传的Url值是/gczjbs/XMBsuopei.aspx?kkk=1&ddd=2这一部分,
但是按我这么些的话Url值只是/gczjbs/XMBsuopei.aspx?kkk=1部分,后面的ddd=2都没有传递到网页中。
解决办法:用url编码处理下
&url=" + Server.UrlEncode("/gczjbs/XMBsuopei.aspx?kkk=1&ddd=2")
问题描述2:
用 ajax从前台显示页面传字符串变量给处理页面,出现了件怪事,我想传的内容是abc+,但接收以后用System.out.println()输出是 abc空格。反复测试好几遍,都是这个结果,真是令人郁闷。如果传送一个参数“2423+35345+456” 接收后还是“2423 35345 456”加号丢失了。在网上搜了搜,找到了原因。原因: url中有些字符被转义,比如空格被编码成加号,于是传的参数明明是加号,获取的值却成了空格。如何解决呢?如果是通过url传递参数,应该对其进行必要 的编码。
解决办法:
在javascript中加入 function URLencode(sStr)
{
return escape(sStr).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\//g,'%2F');
}
对字符串进行处理.如:var str=URLencode("abc+")
对Query字段进行Encode操作
利用一个Query字段在不同主页间传递信息时必须进行Encode操作,因为如果不这样做,你很可能使得接受信息的那边接受到一些你所不期望的奇怪字串。
注意
其实如果Query字段中没有一些特殊字符,例如空格和标点符号等,那么也可以不进行Encode操作,例如上个小节的例子就是。
其实,这种Encode操作是十分容易的,有一个特定的方法来执行这种操作:那就是Server.URLEncode()方法,看下面这个例子:
<a href=“response.asp?Message=<%=Server.URLEncode(“This Query String has been URL encoded.”)%>“>点击这里</a>
请注意不要对Query字段的名称以及等号进行Encode操作,你只需要将其值进行Encode操作就可以了。
进行了encode操作后,Query字段如下:
Message=This+Query+String+has+been+URL+encoded%2E
你并不需要考虑对上面的字串再进行解码,Active Server Page会自动进行这样的处理。例如,假设response.asp中有这样的脚本:
<%=Request.QueryString(“message”)%>
这时,显示结果为:
This Query String has been URL encoded.
关于Server.UrlEncode
ASP.net中的Server.UrlEncode函数和ASP中的Server.URLEncode函数返回的值不一样。
试验代码:
ASP.net 中:Response.Write(Server.UrlEncode("汇编"));返回:%e6%b1%87%e7%bc%96
ASP 中:Response.Write Server.URLEncode("汇编") 返回:%BB%E3%B1%E0
产生这个问题的原因:
ASP.net 中的 Server.UrlEncode 默认是按照 UTF-8 编码方式进行处理的
ASP中是按照本地设置编码方式进行处理的。
如果你在 ASP.net 下采用如下的编码: ASP 和 ASP.net 的结果就会一样:
Response.Write(HttpUtility.UrlEncode("汇编",Encoding.Default));
ASP中的Server.URLEncode参数转换以及逆转函数UrlEncode
将字符串以 URL 编码。
返回值: 字符串
函数种类: 编码处理
内容说明
本函数将字符串以 URL 编码。例如空格就会变成加号。
ASP中的用法:
Server.URLEncode("内容")
例如:
<%
Response.Write Server.UrlEncode("学而时习之")
%>
输出的结果是:%D1%A7%B6%F8%CA%B1%CF%B0%D6%AE
程序中接受参数的时候,还需要转换成原来的样子,则需要URLDecode函数,如下:
Function URLDecode(enStr)
dim deStr,strSpecial
dim c,i,v
deStr=""
strSpecial="!""#$%&'()*+,.-_/:;<=>?@[\]^`{|}~%"
for i=1 to len(enStr)
c=Mid(enStr,i,1)
if c="%" then
v=eval("&h"+Mid(enStr,i+1,2))
if inStr(strSpecial,chr(v))>0 then
deStr=deStr&chr(v)
i=i+2
else
v=eval("&h"+ Mid(enStr,i+1,2) + Mid(enStr,i+4,2))
deStr=deStr & chr(v)
i=i+5
end if
else
if c="+" then
deStr=deStr&" "
else
deStr=deStr&c
end if
end if
next
URLDecode=deStr
End function
例如:
<%
Response.Write URLDecode("%D1%A7%B6%F8%CA%B1%CF%B0%D6%AE")
%>
输出的结果则是:学而时习之