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 ...
随机推荐
- ES6数组去重
今天五一,在出去玩之前赶紧写篇博客,时刻不要忘记学习^_^!! 提到数组去重,想必大家都不陌生,会的同学可能噼里啪啦写出好几个,下面来看看之前常见的去重代码: 'use strict'; var ar ...
- 提供他人class文件
1.考虑的问题,提供的文件是否依赖于其他jar包. 例如:解析html简历时,依赖于Jsoup包.
- SQL SERVER 存储过程基础
一.注释 -- 单行注释,从这到本行结束为注释,类似C++,c#中// /* … */ 多行注释,类似C++,C#中/* … */ 二.变量 (int, smallint, tinyint, deci ...
- jQuery 效果- 动画
jQuery animate() 方法允许您创建自定义的动画. jQuery 动画实例 jQuery jQuery 动画 - animate() 方法 jQuery animate() 方法用于创建自 ...
- Spring在代码中获取bean的几种方式(转:http://www.dexcoder.com/selfly/article/326)
方法一:在初始化时保存ApplicationContext对象 方法二:通过Spring提供的utils类获取ApplicationContext对象 方法三:继承自抽象类ApplicationObj ...
- asp.net中后台javaScrip的使用
ClientScriptManager csm = Page.ClientScript; //Script标记靠近<form>标签 //csm.Register ...
- cocod2d-x 之 CCDirector、CCScene、CCSprite
CCDirector是控制游戏流程的主要组件. typedef enum { /// sets a 2D projection (orthogonal projection)2D投机模式 kCCDir ...
- illegal mix of collcations表连接时非法的校对
背景:旧表导入新表,新表里的字段是字符串类型 新表是int类型 两个字段通过字符串处理后相等 (准备left join 关联起来)报错 把int类型字段更改成varchar字符串类型后成功
- SharePoint 2013 更新多个用户字段(Person or Group)
有时我们需要更新一个用户到Person or Group类型的字段, 当然这个属性允许设置多个用户, 要如何才能添加新的用户到该字段,同时还不影响原始存在的值. 这里我们需要了解 SPFieldUse ...
- windows2008 R2 安装wampserver
1. 在官网http://www.wampserver.com/下载,wampserver2.5; 2. 安装时候会缺少msvcr110.dll文件,所以先要安装这个文件: 3. 先从微软下载Visu ...