.NET中url参数的编码和转码…【Server.UrlDecode(""),Server.UrlDecode("")】
2010-06-09 12:17
204 查看
URL编码和转码函数:
URL编码:
Server.UrlEncode(Request.QueryString["param2"]);
HttpUtility.UrlEncodeUnicode();
URL解码:
Server.UrlDecode(Request.QueryString["param1"]);
HTML编码:
Server.HtmlEncode("")
HTML解码:
Server.HtmlDecode("")
注: 在.net 3.5中Server.UrlEncode不会编码 单引号,在最新的.net 4.0 则会编码单引号!
这里的URL编码一般指的 URL参数编码,那么为什么要给参数编码呢?
<a href="default.aspx?Name=<%#Eval("Name") %>&id=<%#Eval("id") %>">Test</a> 也许我们都写过这样的代码吧[至少我这样写:-)]
<%#Eval("Name") %>是绑定的数据! 我们也无法预知他会是什么内容!
当<%#Eval("Name") %>的值为: Hello”world 的时候 , 查看源文件: <a href="default.aspx?Name=Hello"world&id=68">Test</a> name=Hello, id 参数就丢失了!
当<%#Eval("Name") %>的值为: Hello&world 的时候 , 查看源文件: <a href="default.aspx?Name=Hello&world&id=68">Test</a> &本来就是分割参数的!
如何才能让上面的参数正确呢?[试试下面的]
<a href="default.aspx?Name=<%#Server.UrlEncode(Eval("Name").ToString()) %>&id=<%#Eval("id") %>">Test</a>
当<%#Eval("Name") %>的值为: Hello”world 的时候 , 查看源文件: <a href="default.aspx?Name=Hello%22world&id=68">Test</a>
当<%#Eval("Name") %>的值为: Hello&world 的时候 , 查看源文件: <a href="default.aspx?Name=Hello%26world&id=69">Test</a>
现在你在用 Response.Write(Server.UrlDecode(Request.QueryString["Name"])); 就可以了! 我发现好像后台不解码也可以!
如果 <a href='default.aspx?Name=<%#Eval("Name") %>&id=<%#Eval("id") %>'>Test</a> 注意现在外面用的 单引号了!
当<%#Eval("Name") %>的值为: Hello'world 的时候 , 查看源文件: <a href='default.aspx?Name=Hello'world&id=68'>Test</a> name=Hello, id 参数就丢失了! 单引号把后面的截断了!当使用Server.UrlEncode使用<a href='default.aspx?Name=<%#Server.UrlEncode(Eval("Name").ToString()) %>&id=<%#Eval("id") %>'>Test</a> 后 发现还是不行!
这是由于:在.net 3.5中Server.UrlEncode不会编码 单引号,在最新的.net 4.0 这个问题已解决! 我去msdn论坛求助的原帖:http://social.microsoft.com/Forums/zh-CN/partnercndevaspnet/thread/de970176-b64a-4d30-a8d9-7b497577a482
遇到这个问题还是建议把 href 后面跟 双引号吧! 如果你不喜欢这样的话,还可以把 单引号替换为 '
然后 Response.Write(Server.UrlDecode("'")) = ' [单引号]
总结:
URL传参数尽量不要传字符串! 传Id,Guid等一些较好!
如果要传字符串,请确保 一定记得使用Server.UrlDecode()给参数编码! 始终不要信任用户的输入!
如果你用.net 3.5 , 请把href后面的单引号改为双引号! <a href=”” /> 因为Server.UrlDecod()不编码单引号!
Technorati 标签: Server.UrlDecode("")
相关文章推荐
- .NET中url参数的编码和转码…【Server.UrlDecode(""),Server.UrlDecode("")】
- URL传递的参数是UTF-8编码,在打开的页面正常显示(GB2312)的方法
- .net中,WEB服务器错误,"http://1.1 500 server error" 解决办法
- PHP获取当前url路径的函数及服务器变量:$_SERVER["QUERY_STRING"],$_SERVER["REQUEST_URI"],$_SERVER["SCRIPT_NAME"],$_SER
- 浏览器地址传中文解决方法 URLEncoder.encode(str,"编码") new URLDecoder().decode(str,"编码")
- 判断URL中的中文参数是GB2312还是Utf-8编码
- VB,VBS,实现server.URLEncode及反编码功能的函数URLEncode()与URLDecode()
- javascript通过url向jsp页面传递中文参数乱码解决方法(两次编码,一次解码)
- SharePoint 2010 Server Error: The URL "XXX" is invalid, it may refer to a nonexistent file or ...
- url参数以及url的编码解码
- https 请求的url含中文参数 配置server.xml解决
- aspnetpager多参数URL重写在webconfig中, "&"这个字符的问题,&转义失败
- 当html中存在url中如: onclick="toView('参数1')", 参数1是特别字符,如&asop;"' "等时,浏览器解析时会报错。解决方法如文中描述
- Server.UrlEncode、HttpUtility.UrlDecode不同编码 下载时文件名变成乱码
- 关于svn获取获取文件时 Unable to connect to a repository at URL"https://..."执行上下文错误:参数错误
- 关于HttpUtility.UrlEncode,HttpUtility.UrlDecode,Server.UrlEncode,Server.UrlDecode
- MS SQL Server 2008 新特性 - User-Defined Table Type 实现将.NET DataTable作为参数传入数据库
- 前台页面使用utf-8编码,url中包含中文参数时后台获取参数乱码问题解决
- JS,C#URL传递参数时的编码问题
- .net获取当前url各种属性(文件名、参数、域名 等) & 鼠标手型