相关函数如下:(都是全局函数)

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编解码的更多相关文章

  1. URI编码解码和base64

    概述 对于uri的编解码,在js中有3对函数,分别是escape/unescape,encodeURI/decodeURI,encodeURIComponent/decodeURIComponent. ...

  2. 【转】Java web 编解码

    几种常见的编码格式 为什么要编码 不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的,这些符号也就是我们人类使用的语言 ...

  3. JAVA WEB 中涉及的编解码

    1.对URL解码 1)URI部分解码:<Connector URIEncoding="UTF-8" /> 2)QueryString解码要么是 Header 中 Con ...

  4. 搞清tomcat中的编解码

    http://www.xuebuyuan.com/1287083.html *********************************** 经常会被乱码问题搅得头晕脑胀.事实上,乱码问题涉及的 ...

  5. JSP与Servlet的编解码

    一.java web中涉及编解码的地方 (1)浏览器端向后台发起请求时:URL.Cookie.Parameter: (2)后台响应返回数据时:页面编码,数据库数据编码:

  6. 视音频编解码基本术语及解释&MediaInfo

    MEDIA INFO 下载: https://mediaarea.net/en/MediaInfo/Download/Windows 摘要:          整理了一些基本视音频术语,用于入门和查询 ...

  7. Android实战技巧之三十七:图片的Base64编解码

    通经常使用Base64这样的编解码方式将二进制数据转换成可见的字符串格式,就是我们常说的大串.10块钱一串的那种,^_^. Android的android.util包下直接提供了一个功能十分完备的Ba ...

  8. iOS8系统H264视频硬件编解码说明

    公司项目原因,接触了一下视频流H264的编解码知识,之前项目使用的是FFMpeg多媒体库,利用CPU做视频的编码和解码,俗称为软编软解.该方法比较通用,但是占用CPU资源,编解码效率不高.一般系统都会 ...

  9. IOS和Android支持的音频编解码

    1.IOS编码 参考文档地址:https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/Multimedi ...

随机推荐

  1. 启动hadoop时候报错:localhost: ssh: Could not resolve hostname localhost: Temporary failure in name resolution”

    这个错误是由于配置文件没有配置好.解决方案如下: 1 打开profile文件 vim /etc/profile 2 在文件最后加入的内容应该如下(高亮的两句一般是大家缺少的): export JAVA ...

  2. 关于SqlServer修改数据库常用信息的方法

    --系统表里存放各个数据库属性信息的表之一SELECT name AS [Logical Name], physical_name AS [DB File Path],type_desc AS [Fi ...

  3. Linux命令行编辑快捷键

    Linux命令行编辑快捷键: history 显示命令历史列表 ↑(Ctrl+p) 显示上一条命令 ↓(Ctrl+n) 显示下一条命令 !num 执行命令历史列表的第num条命令 !! 执行上一条命令 ...

  4. Sql server 数据库中,纯SQL语句查询、执行 单引号问题。

    在默认值情况下, select 'abc',Titile from tb_Name;  ---输出内容 是abc: 如果想输出 单引号 'abc,需要使用select '''abc',Titile f ...

  5. RAC配置、安装

    RAC  配置及安装 2012年12月30日 星期日 21:49 ******************************************************************* ...

  6. java 从jar包中读取资源文件

    在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题.但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码: Jav ...

  7. 原生JS判断密码强弱

    前些天工作中有这个需求,自己手写了相关的JS代码,第一种方法是通过ASCII 码判断密码类型,完成用户注册时判断用户输入密码的强度,分强.弱.中三等级,它可以根据用户输入的密码显示对应的密码强弱等级, ...

  8. c++primerplus(第六版)编程题——第3章(数据类型)

    声明:作者为了调试方便,每一章的程序写在一个工程文件中,每一道编程练习题新建一个独立文件,在主函数中调用,我建议同我一样的初学者可以采用这种方式,调试起来会比较方便. 工程命名和文件命名可以命名成易识 ...

  9. placeholder调整颜色

    placeholder需要设定以下样式: ::-webkit-input-placeholder { /* WebKit browsers */ color: #999; } :-moz-placeh ...

  10. Java jdk环境搭建

    java JDK的配置在我的电脑环境变量中配置: 主要的配置参数path  例:path = C:\jdk1.7.0_13\bin ; 另外一个JAVA_HOME 例:JAVA_HOME = C:\j ...