uri编解码
相关函数如下:(都是全局函数)
encodeURI(URIString):将文本字符串编码为有效的统一资源标示符URI
decodeURI(URIString) encodeURIComponent(s):编码URI的一部分或者是其他待编码的字符串
decodeURIComponent(s)
encodeURI编码规则:
1、对于encodeURI(),ASCII字母、数字、"- _ . ! ~ * ' ()"等标点不会编码;
2、由于encodeURI用于编码URI,因而在uri中具有具有特殊意义的ASCII标点也不会编码,例如: ; / ? : @ = + $ , #
3、uri中其他字符将被转换为对应的utf-8编码;
1、0001—007E(ASCII字符)编码为%xx
2、\u0080—\u07ff之间的unicode字符,用%xx%xx编码
3、\u0800—\uffff 之间的unicode字符均被编码为%xx%xx%xx
4、使用该方法编码时应确保URI中不包含? # 等字符,否则应该使用encodeURIComponent对uri每部分单独编码
encodeURIComponent:
1、ASCII字母、数字、"- _ . ! ~ * ' ()"等标点不会编码;
2、/ ? : @ = + $ , #等用来分隔uri的会被编码
注意:
1、ECMAScript3前可以使用escape()和unescape执行类似encodeURI的编码,现在已经弃用
2、encodeURIComponent设参数是URI的一部分,因而用于分割URI不同部分的字符会被编码
3、URI中包含/ ? : @ = + $ 等时应该用encodeURIComponent对uri每部分单独编码
4、使用encodeURIComponent编码后,可以使用decodeURI解码也可以使用decodeURIcomponent解码
eg:
var uriEncode = encodeURI("http://www.cnblogs.com/wishyouhappy");
var uriDeocde = decodeURI(uriEncode);
console.log("uriEncode: " + uriEncode); //uriEncode: http://www.cnblogs.com/wishyouhappy
console.log("uriDeocde: " + uriDeocde); //uriDeocde: http://www.cnblogs.com/wishyouhappy //,/?:@&=+$#未被编码
var uriEncode = encodeURI(",/?:@&=+$#");
var uriDeocde = decodeURI(uriEncode);
console.log("uriEncode: " + uriEncode); //,/?:@&=+$#
console.log("uriDeocde: " + uriDeocde); //,/?:@&=+$# //此例中空格编码为%20, 汉字编码为%xx%xx%xx
var uriEncode = encodeURI("http://www.cnblogs.com?name = '流光'");
var uriDeocde = decodeURI(uriEncode);
console.log("uriEncode: " + uriEncode); //http://www.cnblogs.com?name%20=%20'%E6%B5%81%E5%85%89'
console.log("uriDeocde: " + uriDeocde); // http://www.cnblogs.com?name = '流光' //使用encodeURIComponent编码后使用uriDeicode和uriDecodeComponent都可以解码
var uriEncode = encodeURIComponent("Are you happy?");
var uriDeocde = decodeURI(uriEncode);
var uriDecodeComponent = decodeURIComponent(uriEncode);
console.log("uriEncode: " + uriEncode); // Are%20you%20happy%EF%BC%9F
console.log("uriDeocde: " + uriDeocde); //Are you happy?
console.log("uriDecodeComponent: " + uriDecodeComponent); //Are you happy? var uriEncode = encodeURIComponent(",/?:@&=+$#");
var uriDecodeComponent = decodeURIComponent(uriEncode);
console.log("uriEncode: " + uriEncode); //%2C%2F%3F%3A%40%26%3D%2B%24%23
console.log("uriDecodeComponent: " + uriDecodeComponent); //,/?:@&=+$#
uri编解码的更多相关文章
- URI编码解码和base64
概述 对于uri的编解码,在js中有3对函数,分别是escape/unescape,encodeURI/decodeURI,encodeURIComponent/decodeURIComponent. ...
- 【转】Java web 编解码
几种常见的编码格式 为什么要编码 不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的,这些符号也就是我们人类使用的语言 ...
- JAVA WEB 中涉及的编解码
1.对URL解码 1)URI部分解码:<Connector URIEncoding="UTF-8" /> 2)QueryString解码要么是 Header 中 Con ...
- 搞清tomcat中的编解码
http://www.xuebuyuan.com/1287083.html *********************************** 经常会被乱码问题搅得头晕脑胀.事实上,乱码问题涉及的 ...
- JSP与Servlet的编解码
一.java web中涉及编解码的地方 (1)浏览器端向后台发起请求时:URL.Cookie.Parameter: (2)后台响应返回数据时:页面编码,数据库数据编码:
- 视音频编解码基本术语及解释&MediaInfo
MEDIA INFO 下载: https://mediaarea.net/en/MediaInfo/Download/Windows 摘要: 整理了一些基本视音频术语,用于入门和查询 ...
- Android实战技巧之三十七:图片的Base64编解码
通经常使用Base64这样的编解码方式将二进制数据转换成可见的字符串格式,就是我们常说的大串.10块钱一串的那种,^_^. Android的android.util包下直接提供了一个功能十分完备的Ba ...
- iOS8系统H264视频硬件编解码说明
公司项目原因,接触了一下视频流H264的编解码知识,之前项目使用的是FFMpeg多媒体库,利用CPU做视频的编码和解码,俗称为软编软解.该方法比较通用,但是占用CPU资源,编解码效率不高.一般系统都会 ...
- IOS和Android支持的音频编解码
1.IOS编码 参考文档地址:https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/Multimedi ...
随机推荐
- css兼容性问题
其实做网页最大的问题还是兼容性吧,要调试IE的各种浏览器. DIV+CSS设计IE6.IE7.FF 兼容性 DIV+CSS网页布局这是一种趋势,我也开始顺应这股趋势了,不过在使用DIV+CSS网站设 ...
- OBJECT和EMBED标签(转载)
一.介绍: 我们要在网页中正常显示flash内容,那么页面中必须要有指定flash路径的标 签.也就是OBJECT和EMBED标签.OBJECT标签是用于windows平台的IE浏览器的,而EMBED ...
- mysql数据库优化日志(更)-howyue
1)记一次首页查询优化 优化前: 优化后: 主要优化: 1.select查询只查询需要字段: 2.where条件字段添加索引:
- 如何管理你的 Javascript 代码
今天不聊技术的问题,咱们来聊聊在前端开发中如何管理好自己的 Javascript 代码.首先,咱们先来说说一般都有哪些管理方式?我相信 seajs . requirejs 对于前端开发者而言都不陌 ...
- Business Intelligence (BI)
BI, 全称Business Inteligence. 帮助企业更有效地利用数据,提供经营决策支持.让决策管理者随时随地获取关键信息,基于数字决策,最终提高决策水平. 包括范围(层次由低到高):数据报 ...
- 狗狗40题~(Volume B)
H - Sorting Slides 应该是个二分匹配的模板题的,但我还不会写 = = 其实数据规模很小,就用贪心的方法就水过了(没加vis判冲突wa了几发,从此开始艰难的没有1A 的生活) #inc ...
- java.lang.String类compareTo()返回值解析
一.compareTo()的返回值是int,它是先比较对应字符的大小(ASCII码顺序)1.如果字符串相等返回值02.如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值(ascii码值 ...
- CSAPP LAB: Buffer Overflow
这是CSAPP官网上的著名实验,通过注入汇编代码实现堆栈溢出攻击.实验材料可到我的github仓库 https://github.com/Cheukyin/CSAPP-LAB/ 选择buffer-ov ...
- IE下空链接失效原因及解决方法
我们把a链接的display设置为block,但如果对该标签设置为position:absolute后,会发现在ie6.ie7下有时点击无效,ie8下有效(ie8标准),使用zoom:1方式也无法解决 ...
- Hdu 2874 Connections between cities
题意: 城市 道路 没有环 不一定连通的树 求两城市的最短距离 设想一下就是很多小树 那好办 思路: lca离线算法 然后有个技巧就是 每次我们tarjan一棵树不是最后树的节点都访问过并且孩子全 ...