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之水平横向滚动歌词同步的应用
May 07 Javascript
基于jQuery+JSON的省市二三级联动效果
Jun 05 Javascript
JS基于cookie实现来宾统计记录访客信息的方法
Aug 04 Javascript
jquery实现倒计时效果
Dec 14 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
May 26 Javascript
js表单元素checked、radio被选中的几种方法(详解)
Aug 22 Javascript
js 实现省市区三级联动菜单效果
Feb 20 Javascript
详解使用angularjs的ng-options时如何设置默认值(初始值)
Jul 18 Javascript
Vue项目引进ElementUI组件的方法
Nov 11 Javascript
vue 实现小程序或商品秒杀倒计时
Apr 14 Javascript
微信小程序关键字变色实现代码实例
Dec 13 Javascript
JS实现纸牌发牌动画
Jan 19 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
Terran魔法科技
2020/03/14 星际争霸
用php+javascript实现二级级联菜单的制作
2008/05/06 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
php用ini_get获取php.ini里变量值的方法
2015/03/04 PHP
php实现RSA加密类实例
2015/03/26 PHP
js实现addClass,removeClass,hasClass的函数代码
2011/07/13 Javascript
二叉树先序遍历的非递归算法具体实现
2014/01/09 Javascript
10分钟学会写Jquery插件实例教程
2014/09/06 Javascript
jQuery+ajax读取并解析XML文件的方法
2016/09/09 Javascript
JS闭包与延迟求值用法示例
2016/12/22 Javascript
微信小程序 同步请求授权的详解
2017/08/04 Javascript
Vue.js简易安装和快速入门(第二课)
2017/10/17 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
Vue中render方法的使用详解
2018/01/26 Javascript
解决VUE框架 导致绑定事件的阻止冒泡失效问题
2018/02/24 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
node实现爬虫的几种简易方式
2019/08/22 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
2019/10/11 Javascript
ES6箭头函数和扩展实例分析
2020/05/23 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
解决vue页面渲染但dom没渲染的操作
2020/07/27 Javascript
vue 导航守卫和axios拦截器有哪些区别
2020/12/19 Vue.js
Python处理文本文件中控制字符的方法
2017/02/07 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
详解PyTorch手写数字识别(MNIST数据集)
2019/08/16 Python
Python中turtle库的使用实例
2019/09/09 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
2019/09/16 Python
Django ValuesQuerySet转json方式
2020/03/16 Python
python使用建议与技巧分享(一)
2020/08/17 Python
css3的图形3d翻转效果应用示例
2014/04/08 HTML / CSS
澳大利亚最大的护发和护肤品购物网站:RY
2019/12/26 全球购物
行政管理毕业生自荐信
2014/02/24 职场文书
房地产项目建议书
2014/03/12 职场文书
校企合作协议书
2014/04/16 职场文书
病人家属写给医院的感谢信
2015/01/23 职场文书
推普标语口号大全
2015/12/26 职场文书