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

  1. encodeURI(URIString):将文本字符串编码为有效的统一资源标示符URI
  2. decodeURI(URIString)
  3.  
  4. encodeURIComponent(s):编码URI的一部分或者是其他待编码的字符串
  5. 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:

  1. var uriEncode = encodeURI("http://www.cnblogs.com/wishyouhappy");
  2. var uriDeocde = decodeURI(uriEncode);
  3. console.log("uriEncode: " + uriEncode); //uriEncode: http://www.cnblogs.com/wishyouhappy
  4. console.log("uriDeocde: " + uriDeocde); //uriDeocde: http://www.cnblogs.com/wishyouhappy
  5.  
  6. //,/?:@&=+$#未被编码
  7. var uriEncode = encodeURI(",/?:@&=+$#");
  8. var uriDeocde = decodeURI(uriEncode);
  9. console.log("uriEncode: " + uriEncode); //,/?:@&=+$#
  10. console.log("uriDeocde: " + uriDeocde); //,/?:@&=+$#
  11.  
  12. //此例中空格编码为%20, 汉字编码为%xx%xx%xx
  13. var uriEncode = encodeURI("http://www.cnblogs.com?name = '流光'");
  14. var uriDeocde = decodeURI(uriEncode);
  15. console.log("uriEncode: " + uriEncode); //http://www.cnblogs.com?name%20=%20'%E6%B5%81%E5%85%89'
  16. console.log("uriDeocde: " + uriDeocde); // http://www.cnblogs.com?name = '流光'
  17.  
  18. //使用encodeURIComponent编码后使用uriDeicode和uriDecodeComponent都可以解码
  19. var uriEncode = encodeURIComponent("Are you happy?");
  20. var uriDeocde = decodeURI(uriEncode);
  21. var uriDecodeComponent = decodeURIComponent(uriEncode);
  22. console.log("uriEncode: " + uriEncode); // Are%20you%20happy%EF%BC%9F
  23. console.log("uriDeocde: " + uriDeocde); //Are you happy?
  24. console.log("uriDecodeComponent: " + uriDecodeComponent); //Are you happy?
  25.  
  26. var uriEncode = encodeURIComponent(",/?:@&=+$#");
  27. var uriDecodeComponent = decodeURIComponent(uriEncode);
  28. console.log("uriEncode: " + uriEncode); //%2C%2F%3F%3A%40%26%3D%2B%24%23
  29. 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. Fileupload控件导致500错误

    问题: 今天遇到一个问题,用Fileupload控件上传Excel文件,用一个button控件调用“FileUpload1.SaveAs”方法,点击按钮后出现服务器500错误.如下图: 解决方法: 在 ...

  2. android 如何解决模块之间的通讯的耦合问题

    使用EventBus http://wuyexiong.github.io/blog/2013/04/30/android-fragment/ http://yunfeng.sinaapp.com/? ...

  3. postgresql jsonb类型查询

    select * from (select * from ud_order where user_id=10 and status=2unionselect * from ud_order where ...

  4. oracle数组学习资料

    --oracle数组,所谓数组就是  字段的 个数,数组应该很有用 --可变数组 declare  type v_ar is varray(10) of varchar2(30);   my_ar v ...

  5. 十大算法---Adaboost

    当我们有针对同一数据集有多个不同的分类器模型时,怎样组合它们使预测分类的结果更加准确, 针对这种情况,机器学习通常两种策略. 1 一种是bagging,一种是boosting bagging:随机对样 ...

  6. ExtJs 第二章,Ext.form.Basic表单操作

    1.认识Ext.form.Panel表单面板         Ext.form.field.CheckBox 复选框 checkboxfield Ext.form.CheckBoxGroup 复选框组 ...

  7. 性能测试实践-linux

    需求:线上系统性能优化,查找服务器和线上系统瓶颈 根据线上经验数据及期望值定量 数据   up down 线上数据 50 500 测试数据 100 500~2000+ 测试数据 200 500~200 ...

  8. yzoi1109&&viojs1042最小步数的一点看法——回文数

    Description - 问题描述 有一天,雄霸传授本人风神腿法第一式:捕风捉影..............的步法(弟子一:堂主,你大喘气呀.风:你给我闭嘴.)捕风捉影的关键是换气(换不好就会大喘气 ...

  9. 神秘链接__proto__是什么鬼

    _proto_实际上是某个实例对象的隐藏属性,而prototype是其构造器函数(或者说‘类’)的原型属性; function Mine() {} var  hi = new Function(), ...

  10. C# Winform 双屏显示

    双屏显示1 // 利用WinForm中的Screen类,即可比较方便地实现多窗体分别在多个屏幕上显示. //•获取当前系统连接的屏幕数量: Screen.AllScreens.Count(); //• ...