文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>转帖:中文Request.QueryString编码,请指点,着急!谢谢 .NET技术 / ASP.NET - CSDN社区 community.csdn.ne

转帖:中文Request.QueryString编码,请指点,着急!谢谢 .NET技术 / ASP.NET - CSDN社区 community.csdn.ne

时间:2010-12-31  来源:⒈簡單の愛√

代码
string   q   =   Request.Url.Query;   

System.Collections.Specialized.NameValueCollection nv
=
System.Web.HttpUtility.ParseQueryString(q, System.Text.Encoding.GetEncoding(
"GB2312"));
Response.Write(nv[
"Tag"]);

 

 

  
    
  我们用   Lutz   Roeder's   .NET   Reflector     来看   System.Web.HttpUtility.ParseQueryString   方法的实现:  
  一直反查进去,我们可以看到最终处理Url参数字符串分析的代码如下:  
     
  System.Web.HttpValueCollection   类的如下函数实现了对Url参数的解析  
  这里我们看到,它是自己一个个字符进行的分析。   
    
  

代码
internal   void   FillFromString(string   s,   bool   urlencoded,   Encoding   encoding)   
{
int num1 = (s != null) ? s.Length : 0;
for (int num2 = 0; num2 < num1; num2++)
{
int num3 = num2;
int num4 = -1;
while (num2 < num1)
{
switch (s[num2])
{
case '=':
if (num4 < 0)
{
num4
= num2;
}
break;
}
num2
++;
}
string text1 = null;
string text2 = null;
if (num4 >= 0)
{
text1
= s.Substring(num3, num4 - num3);
text2
= s.Substring(num4 + 1, (num2 - num4) - 1);
}
else
{
text2
= s.Substring(num3, num2 - num3);
}
if (urlencoded)
{
base.Add(HttpUtility.UrlDecode(text1, encoding), HttpUtility.UrlDecode(text2, encoding));
}
else
{
base.Add(text1, text2);
}
if ((num2 == (num1 - 1)) && (s[num2] == '&'))
{
base.Add(null, string.Empty);
}
}
}

 

 

 
    
  至于对方传递给自己的是哪种编码方式,最好也一并作为参数传递过来,这样我们就可以根据用户的这个参数进行解密操作。


引文来源  中文Request.QueryString编码,请指点,着急!谢谢 .NET技术 / ASP.NET - CSDN社区 community.csdn.net

相关阅读 更多 +
排行榜 更多 +
XLM币最具爆发力的安全交易所币安binance下载

XLM币最具爆发力的安全交易所币安binance下载

金融理财 下载
XEM币最安全隐私链的全球交易所币安binance下载

XEM币最安全隐私链的全球交易所币安binance下载

金融理财 下载
WAVES币最新上线的优质交易所币安binance下载

WAVES币最新上线的优质交易所币安binance下载

金融理财 下载