C#中URL编码


 

C#中编码主要方法

HttpUtility.UrlEncodeServer.UrlEncodeUri.EscapeUriStringUri.EscapeDataString

Server.UrlEncode && HttpUtility.UrlEncode 这两个方法在绝大多数情况下是一样的。它们的区别是HttpUtility.UrlEncode默认使用UTF8格式编码,而Server.UrlEncode是使用系统预设格式编码,Server.UrlEncode使用系統预设编码做为参数调用HttpUtility.UrlEncode编码,所以如果系统全局都用UTF8格式编码,这两个方法就是一样的。

HttpUtility.UrlEncode对冒号(:)和斜杠(/)进行了编码

所以不能用来对网址进行编码。也不能对参数进行编码,因为在参数中空格应该被编码为%20而不是被HttpUtility.UrlEncode编码为加号(+),所以不推荐用这两个方法对URI进行编码。

两者对应解码方法:Server.UrlDecode 、HttpUtility. UrlDecode

Uri.EscapeUriString 用于对网址编码(不包含参数)

Uri.EscapeUriString对空格进行了编码,也对中文进行了编码,但对冒号(:)、斜杠(/)和井号(#)未编码,所以此方法可以用于网址进行编码,但不能对参数进行编码,作用类似JavaScript中的encodeURI方法。

Uri.EscapeDataString 用于对网址参数进行编码

Uri.EscapeDataString对冒号(:)、斜杠(/)、空格、中文、井号(#)都进行了编码,所以此方法不可以用于网址进行编码,但可以用于对参数进行编码,作用类似JavaScript中的encodeURIComponent方法。

 

在C#中推荐的做法是用Uri.EscapeUriString对URI的网址部分编码,用Uri.EscapeDataString对URI中传递的参数进行编码。

在网址作为参数进行传递时,C#中用HttpUtility.UrlEncode方法进行编码,JavaScript中用unescape()方法解码是有效的。如:传递的URL参数是http://localhost:54904/user/ShopCart.aspx

'/login/login.aspx?ReturnUrl="+ System.Web.HttpUtility.UrlEncode(“http://localhost:54904/user/ShopCart.aspx”) + "'

编码后的结果:/login/login.aspx?ReturnUrl=http%3a%2f%2flocalhost%3a54904%2fuser%2fShopCart.aspx

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
上一篇:VSCode无法格式化python代码py文件的解决办法
下一篇:form的submit()方法不能触发onsubmit事件的解决方法,兼容各版本浏览器。
评论列表

发表评论

评论内容
昵称:
关联文章

C#URL编码
C#和java对URL编码(UrlEncode)的差异
ASP.NET MVC使用@Url.Action 多个参数中间&被URL编码
Javascript对URL进行编码解码的三种方式介绍
C#代码编码规范手册 软件开发规范 开发指南
C#使用默认浏览器打开URL
C#多线程下载图片 URL转Image
ASP.NET MVC和ASP.NET Core MVC获取当前URL/Controller/Action
.net core MVC页面源码文件文被编码
【gitblit复制URL】 修改URL复制方式Flash插件被浏览器禁用解决办法
.NET Core使用编码GB2312报错‘GB2312‘ is not a supported encoding name 解决方案
微信授权连接URL生成类库
C# 7.0 - C# 7.3 的新增功能
获取URL参数的几种方式
Python百度检索获得真实的目的URL连接
.NET 获得当前连接URL,Origin信息
C#从文件夹随机获取一个文件
C# 扫描识别图片的文字(.NET Framework)
C# 在PDF文档应用多种不同字体
C# 使用JavaScript给PDF文档设置过期时间

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码