JavaScript、C# URL编码、解码总结


Posted in Javascript onJanuary 21, 2017

JavaScript部分

encodeURI() (解码为:decodeURI()):不会转义的字符:- _ . ! ~ * ‘ ( ) ;/?:@&=+$,#

例如:
encodeURI(“https://3water.com?a=-_.!~*'();/?:@&=+$,#”)
输出:
“https://3water.com?a=-_.!~*'();/?:@&=+$,#”

encodeURIComponent() (解码为:decodeURIComponent() ):不会转义的字符: ? _ . ! ~ * ‘ ( )

例如:

encodeURIComponent(“https://3water.com?a=-_.!~*'();/?:@&=+$,#”)

输出:

“http%3A%2F%2F3water.com%3Fa%3D-_.!~*'()%3B%2F%3F%3A%40%26%3D%2B%24%2C%23”

区别:对于;/?:@&=+$,#这些字符的处理。

还有个附加的: escape() ,不过 ECMAScript v3 反对使用该方法。原因猜测是根据转义序列有关,escape()的转移序列为:
对于代码单元小于等于0xFF的被替换字符,使用 %xx 格式的两位数转义序列。对于代码单元大于0xFF的被替换字符,使用 %uxxxx 格式的四位数转义序列。
具体的可以研究一下ECMAScript的规范,由于本人道行太浅,就不深入研究了,哈。。 unescape() 同样不推荐使用。

C#部分:

C#部分比较混乱,不仅有很多urlencode,还有好多htmlencode。但其实在处理url时我们只关注url部分就好了,html那部分当我们处理html时才会用到,如预防xss攻击时应该就需要那些htmlencode,htmldecode了。

下面说一下url的常用方法:

Server.UrlEncode(解码:Server.UrlDecode):
Server.UrlEncode使用系?预设编码做为参数调用HttpUtility.UrlEncode编码,所以如果系统全局都用UTF8格式编码,这两个方法就是一样的(至于是否使用了系统预设编码这个还有待考证,没有找到官方说法)。
HttpUtility.UrlEncode(解码:HttpUtility. UrlDecode)

例如:

HttpUtility.UrlEncode(“https://3water.com?a=-_.!~*'();/?:@&=+$,#”)

输出:

http%3a%2f%2f3water.com%3fa%3d-_.!%7e*%27()%3b%2f%3f%3a%40%26%3d%2b%24%2c%23

可见:此方法会对url地址进行编码。但是有一点要知道,就是此方法会把空格编码为+号而不是十六进制的%20,所以此方法编码参数中如果存在空格会造成错误。

Uri.EscapeUriString(解码:没找到对应的):会对中文、空格等进行转义。

例如:

Uri.EscapeUriString(“https://3water.com?a=中国&123 -_.!~*'();/?:@&=+$,#”)

输出:

https://3water.com?a=%E4%B8%AD%E5%9B%BD&123%20%20%20-_.!~*'();/?:@&=+$,#

可见其不会对网址进行编码。

Uri.EscapeDataString(解码: Uri.UnescapeDataString):不仅对参数,还会对网址进行编码。

例如:

Uri.EscapeDataString(“https://3water.com?a=中国&123 -_.!~*'();/?:@&=+$,#”)

输出:http%3A%2F%2F3water.com%3Fa%3D%E4%B8%AD%E5%9B%BD%26123%20%20%20-_.%21~%2A%2
7%28%29%3B%2F%3F%3A%40%26%3D%2B%24%2C%23

所以,总结:

不需要编码://可用:JavaScript中用encodeURI,否则用encodeURIComponent,C#中用Uri.EscapeUriString否则用Uri.EscapeDataString

Javascript 相关文章推荐
asp.net和asp下ACCESS的参数化查询
Jun 11 Javascript
网页禁用右键实现代码(JavaScript代码)
Oct 29 Javascript
zShowBox 图片放大展示jquery版 兼容性
Sep 24 Javascript
纯js实现重发验证码按钮倒数功能
Apr 21 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
Jun 05 Javascript
jQuery入门基础知识学习指南
Aug 14 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
Jun 16 jQuery
Node.js上传文件功能之服务端如何获取文件上传进度
Feb 05 Javascript
详解mpvue开发微信小程序基础知识
Sep 23 Javascript
uni-app如何实现增量更新功能
Jan 03 Javascript
JavaScript命令模式原理与用法实例详解
Mar 10 Javascript
Vue实现计算器计算效果
Aug 17 Javascript
Vue结合原生js实现自定义组件自动生成示例
Jan 21 #Javascript
jQuery基于正则表达式的表单验证功能示例
Jan 21 #Javascript
一篇文章搞定JavaScript类型转换(面试常见)
Jan 21 #Javascript
超全面的JavaScript开发规范(推荐)
Jan 21 #Javascript
Mongoose学习全面理解(推荐)
Jan 21 #Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
Jan 21 #Javascript
vue实现添加标签demo示例代码
Jan 21 #Javascript
You might like
用PHP控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
火车头采集器3.0采集图文教程
2007/03/17 PHP
php 地区分类排序算法
2013/07/01 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
2015/03/19 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
2015/11/27 PHP
php进程daemon化的正确实现方法
2018/09/06 PHP
yii2 上传图片的示例代码
2018/11/02 PHP
jquery 操作日期、星期、元素的追加的实现代码
2012/02/07 Javascript
JS限制上传图片大小不使用控件在本地实现
2012/12/19 Javascript
nodejs 实现模拟form表单上传文件
2014/07/14 NodeJs
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
基于jQuery 实现bootstrapValidator下的全局验证
2015/12/07 Javascript
完善的jquery处理机制
2016/02/21 Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
2016/11/17 Javascript
JS实现重新加载当前页面或者父页面的几种方法
2016/11/30 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
一种angular的方法级的缓存注解(装饰器)
2018/03/13 Javascript
vue实现简单全选和反选功能
2020/09/15 Javascript
javascript前端实现多视频上传
2020/12/13 Javascript
flask中使用SQLAlchemy进行辅助开发的代码
2013/02/10 Python
python中遍历文件的3个方法
2014/09/02 Python
Python实现图片滑动式验证识别方法
2017/11/09 Python
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
利用python循环创建多个文件的方法
2018/10/25 Python
python求绝对值的三种方法小结
2019/12/04 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
PyChon中关于Jekins的详细安装(推荐)
2020/12/28 Python
css3 column实现卡片瀑布流布局的示例代码
2018/06/22 HTML / CSS
localstorage和sessionstorage使用记录(推荐)
2017/05/23 HTML / CSS
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
酒吧员工的岗位职责
2013/11/26 职场文书
宠物店的创业计划书范文
2014/01/11 职场文书
军训自我鉴定200字
2014/02/13 职场文书
便利店促销方案
2014/02/20 职场文书
python opencv检测直线 cv2.HoughLinesP的实现
2021/06/18 Python