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 相关文章推荐
javascript 同时在IE和FireFox获取KeyCode的代码
Feb 07 Javascript
JavaScript高级程序设计 DOM学习笔记
Sep 10 Javascript
window.open关于浏览器拦截问题分析及解决方法
Feb 05 Javascript
javascript中的原型链深入理解
Feb 24 Javascript
js判断手机和pc端选择不同执行事件的方法
Jan 30 Javascript
javascript如何操作HTML下拉列表标签
Aug 20 Javascript
学习JavaScript设计模式(单例模式)
Nov 26 Javascript
JS产生随机数的几个用法详解
Jun 22 Javascript
js生成随机数方法和实例
Jan 17 Javascript
详解vue-router和vue-cli以及组件之间的传值
Jul 04 Javascript
详解JavaScript 异步编程
Jul 13 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
Jan 26 Vue.js
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
火车头采集器3.0采集图文教程
2007/03/17 PHP
php REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
javascript 面向对象编程 function也是类
2009/09/17 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
一个简单的js树形菜单
2011/12/09 Javascript
js获取html参数及向swf传递参数应用介绍
2013/02/18 Javascript
jquery.messager.js插件导致页面抖动的解决方法
2013/07/14 Javascript
javascript实现动态侧边栏代码
2014/02/19 Javascript
js加密解密字符串可自定义密码因子
2014/05/13 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
2016/05/16 Javascript
JS全局变量和局部变量最新解析
2016/06/24 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
Nodejs 和 Electron ubuntu下快速安装过程
2018/05/04 NodeJs
深入浅析AngularJs模版与v-bind
2018/07/06 Javascript
JS 数组随机洗牌的实例代码
2018/09/12 Javascript
Vue.js中该如何自己维护路由跳转记录
2019/05/19 Javascript
[01:57]2018年度DOTA2最具潜力解说-完美盛典
2018/12/16 DOTA
Python中处理时间的几种方法小结
2015/04/09 Python
Python 3.x基于Xml数据的Http请求方法
2018/12/28 Python
Python使用Shelve保存对象方法总结
2019/01/28 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
2019/08/06 Python
python怎么提高计算速度
2020/06/11 Python
keras 简单 lstm实例(基于one-hot编码)
2020/07/02 Python
python如何变换环境
2020/07/21 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
英国最受欢迎的价格比较网站之一:MoneySuperMarket
2018/12/19 全球购物
人力资源主管职责范本
2014/03/05 职场文书
政治学求职信
2014/06/03 职场文书
思想作风纪律整顿心得体会
2014/09/04 职场文书
教师批评与自我批评(群众路线)
2014/10/15 职场文书
社区党风廉政建设调研报告
2015/01/01 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
网站文案策划岗位职责
2015/04/14 职场文书
结婚主持人致辞
2015/07/28 职场文书
MySQL数据库之内置函数和自定义函数 function
2022/06/16 MySQL