欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » ASP.Net » 正文

热门阅读

Url编码与解码分析

创建时间:2011年09月16日 17:12  阅读次数:(6271)
分享到:
看到很多朋友包括小编的同事都喜欢在url传中文参数,也许当时自己在测试时,传中文参数并没有报错,但我们是不推荐直接传不经过url编码的中文参数的,本章,我们来看看关于url编码相关的知识。

在url不强制说不能包含中文,但我们应该尽量使url串中只包含ascII字符。所以养成将url编码后再发送到服务器,是个好习惯。

Asp.Net是利用Server下的UrlEncode方法与UrlDncode方法来对Url进行编解码的。
Server.UrlEncode(string s)--对s进行Url编码:
Server.UrlDncode(string s)--对s进行Url解码:

UrlEncode会将空格编码为+,不会对~Z、a~z、0~9、-、_、.、!、*、\、(、)这些字符编码,因为这些字符是被认为是安全的字符,其它的字符就会被编码成为%开头的十六制的字符。

比如,我们对"您好"两个字进行编码:
示例:
protected override void OnInit(EventArgs e)
{
  Response.Write(Server.UrlEncode("您好"));
}

输出:%e6%82%a8%e5%a5%bd

我们再将上面编码后的字符解码:
示例:
protected override void OnInit(EventArgs e)
{
  Response.Write(Server.UrlDecode("%e6%82%a8%e5%a5%bd"));
}

输出:您好

有的时候,我们在网上下载文件,在网站上看到的文件名是正常的,但在保存提示框中显示的文件名却是乱码,这就是没有对文件名进行编码的原因。

注意:
1,不要对整个Url地址进行编码:例如:
protected void Button1_Click(object sender, EventArgs e)
{
  Response.Redirect(Server.UrlEncode("http://www.lmwlove.com"));
}

这样,浏览器就认不到你的Url地址了,因为url上面的url地址已经被编码成http%3a%2f%2fwww.lmwlove.com了。

2,#字符是不会被编码的,因为#在url代表的是锚点,有特殊意义,它会截断Url中自身右边的字符,#字符右边的字符是不会发送到服务器端,右边的字符主要用来让浏览器定义到网页中定义好的锚点位置。所以,除了锚点功能外,我们不要在url将#做为参数传递。d
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 31+65=? 的结果(结果是:96)
结  果: