.NET中url参数的编码和转码…【Server.UrlDecode(""),Server.UrlDecode("")】
2011-12-04 15:27
246 查看
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()不编码单引号!
相关文章推荐
- .NET中url参数的编码和转码…【Server.UrlDecode(""),Server.UrlDecode("")】
- 谨防 url 传递参数未编码(转码)产生的陷阱
- 谨防 url 传递参数未编码(转码)产生的陷阱 (转)
- 谨防 url 传递参数未编码(转码)产生的陷阱
- js java中文转码 适用于用url传递中文参数
- 使用URLEncoder、URLDecoder进行URL参数的转码与解码
- c#asp.net url 传递中文参数要使用 System.Web.HttpUtility.UrlEncode 而不能使用Server.UrlEncode
- JS,C#URL传递参数时的编码问题
- .net全站过滤url危险参数,防注入
- Server.UrlEncode与Server.UrlDecode(url传递中文的解决方案)
- .net GridView中 A标签runat="server"问题
- Request.ServerVariables("") 的一些参数说明
- VB,VBS,实现server.URLEncode及反编码功能的函数URLEncode()与URLDecode()
- Server.UrlEncode与Server.UrlDecode(url传递中文的解决方案)
- javascript 对url参数进行编码(解决中文乱码问题)
- 总是陷在有加号"+"的URL参数这个坑里
- .net获取当前url各种属性(文件名、参数、域名 等)的方法
- PHP的json_encode中文被转码的问题 在php5.2中做json_encode的时候。中文会被unicode编码, php5.3加入了options参数, 5.4以后才加入JSON_U
- 找不到位于 "Sharepoint Server URL" 的 Web 应用程序
- url中文参数未编码出现乱码