yaosansi's Blog

当你背向太阳的时候,你只会看到自己的阴影!能力是有限的,努力无限的!

导航

一个关于UrlReferrer的小问题 (asp.net 1.1)

在ASP.NET 1.1 页面中
页面a.aspx 中将汉字做为k的参数传递 如: a.aspx?key=%ca%d3 (参数经过编码) ,b.aspx使用Request.UrlReferrer来获取上一页的地址.

汉字编码方式如下:

1HttpUtility.UrlEncode(key.Text.Trim(),System.Text.Encoding.GetEncoding("gb2312"));


WEB.CONFIG设置如下:

    <globalization 
            requestEncoding
="gb2312" 
            responseEncoding
="gb2312" 
   
/>


需要获得的参数的页面(b.aspx)代码如下:
Response.Write("UrlReferrer="+Request.UrlReferrer.ToString()+"<br />Query="+Request.UrlReferrer.Query);

操作方法: 从a.aspx点了一个链接到b.aspx

输出结果居然是这样:
UrlReferrer=http://localhost/a.aspx?key=??
Query=?key=%ca%d3


这里的 key=%ca%d3 是我想要的结果,但为什么Request.UrlReferrer.ToString()获得的Key却是问号?
Request.UrlReferrer.ToString()和Request.UrlReferrer.Query 在编码上难道有什么区别吗?

 



------------------------------------------------------------------------------------------
根据 awuzi 的提示我又做了以下尝试(主要是验证使用ToString()和不使用的区别):
将b.aspx的代码改成如下所示:
Response.Write("UrlReferrer="+Request.UrlReferrer.ToString()+"<br />Query="+Request.UrlReferrer.Query+"<br />Query.ToString()="+Request.UrlReferrer.Query.ToString());

输出结果如下:
UrlReferrer=http://localhost/a.aspx?key=??
Query=?key=%ca%d3
Query.ToString()=?key=%ca%d3

这说明使用ToString()的和没使用的结果是一样的.




请各位帮忙分析一下,谢谢!

posted on 2007-04-26 13:48  yaosansi  阅读(1317)  评论(4编辑  收藏  举报