Request.Url.Query 和 Request.QueryString的区别

本文通过实例演示了如何使用不同的编码方式对字符串进行URL编码,并展示了这些编码在页面跳转时通过QueryString传递的效果。测试表明,只有特定的编码方式才能被正确解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、准备   
 string name = "杭州"; 
   string strDefault = HttpUtility.UrlEncode(name,System.Text.Encoding.Default); 
   string strASCII = HttpUtility.UrlEncode(name,System.Text.Encoding.ASCII); 
   string strUnicode = HttpUtility.UrlEncode(name,System.Text.Encoding.Unicode); 
   string strUTF8 = HttpUtility.UrlEncode(name,System.Text.Encoding.UTF8); 
   string strUTF7 = HttpUtility.UrlEncode(name,System.Text.Encoding.UTF7); 
   string name1 = HttpUtility.UrlEncode(name); 

    name1             "%e6%9d%ad%e5%b7%9e"  
 strDefault       "%ba%bc%d6%dd"  
 strASCII          "%3f%3f"  
 strUnicode       "mg%de%5d"  
 strUTF8           "%e6%9d%ad%e5%b7%9e"  
 strUTF7           "%2bZ21d3g-"  

2、转到另一个的页面测试: 
   Response.Redirect(string.Format("SetJumpIEServerIP.aspx?a1={0}&a2={1}&a3={2}&a4={3}&a5={4}&a6={5}",name1,strDefault,strASCII,strUnicode,strUTF8,strUTF7)); 

结果 
(1)、Request.Url.Query 能够显示加密的数据 
 Request.Url.Query "?a1=%e6%9d%ad%e5%b7%9e&a2=%ba%bc%d6%dd&a3=%3f%3f&a4=mg%de%5d&a5=%e6%9d%ad%e5%b7%9e&a6=%2bZ21d3g-" string 

(2)、Request.QueryString只能显示HttpUtility.UrlEncode(name)的数据 
 Request.QueryString["a1"]  为:  "杭州" string 
 Request.QueryString["a2"]   为:  "" string 
 Request.QueryString["a3"]    为: "??" string 
 Request.QueryString["a4"]  为:"mg]" string 
 Request.QueryString["a5"] 为: "杭州" string 
 Request.QueryString["a6"]  为:"+Z21d3g-" string 


3、观点:Request.QueryString是很弱的,当非HttpUtility.UrlEncode(name); 
加密时, 就不能正常获得数据。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值