escape 和 unescape

escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。

采用unicode字符集对指定的字符串除0-255以外进行编码。所有的空格符、标点符号、特殊字符以及更多有联系非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z。

escape()函数用于js对字符串进行编码,不常用。

示例:

var url = "http://localhost:8080/pro?a=1&b=张三&c=aaa";
escape(url)  -->   http%3A//localhost%3A8080/pro%3Fa%3D1%26b%3D%u5F20%u4E09%26c%3Daaa

encodeURI 和 decodeURI

把URI字符串采用UTF-8编码格式转化成escape各式的字符串。

encodeURI不编码字符有82个:!,#,$,&,’,(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

encodeURI()用于整个url编码

示例:

var url = "http://localhost:8080/pro?a=1&b=张三&c=aaa";
encodeURI(url)  -->   http://localhost:8080/pro?a=1&b=%E5%BC%A0%E4%B8%89&c=aaa

encodeURI还经常用于行中文的请求中,如:

async getDataAction(){if(this.isAjax('post')){const yamc = this.post('yamc');const glbm = this.post('glbm');let res = await this.service('midway','information').api('/ms_information/queryPlanPatrolInfo?yamc=' + encodeURI(yamc) + '&glbm=' + glbm, {method: 'post'});if (res.code == 0){return this.success(res.data);}else{return this.fail(res.msg);}}
}

如果请求中含中文不进行转码的话很有可能会遇到这种情况《nodejs使用http报错: Request path contains unescaped characters》

encodeURIComponent 和 decodeURIComponent

与encodeURI()的区别是,它用于对URL的组成部分进行个别编码,而不用于对整个URL进行编码。

因此,"; / ? : @ & = + $ , #",这些在encodeURI()中不被编码的符号,在encodeURIComponent()中统统会被编码。至于具体的编码方法,两者是一样。把URI字符串采用UTF-8编码格式转化成escape格式的字符串。

encodeURIComponent() 用于参数的传递,参数包含特殊字符可能会造成间断。

示例:

var url = "http://localhost:8080/pro?a=1&b=张三&c=aaa";
encodeURIComponent(url) --> http%3A%2F%2Flocalhost%3A8080%2Fpro%3Fa%3D1%26b%3D%E5%BC%A0%E4%B8%89%26c%3Daaa

示例2:

var url = "http://localhost:8080/pp?a=1&b="+ paramUrl,
var paramUrl = "http://localhost:8080/aa?a=1&b=2&c=3";应该使用encodeURIComponent()进行转码  
encodeURIComponent(paramUrl) --> http://localhost:8080/pp?a=1&b=http%3A%2F%2Flocalhost%3A8080%2Faa%3Fa%3D1%26b%3D2%23%26c%3D3

Js中对URL进行转码与解码相关推荐

  1. js url解码gbk_JS中对URL进行转码与解码

    1. escape 和 unescape escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值. 采用unicode字符集对指定的字符串除0-255以外进行编码.所 ...

  2. php js转码解码函数,javascript如何实现URL的转码与解码?

    本篇文章给大家带来的内容是关于javascript如何实现URL的转码与解码?有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1. escape 和 unescape escape() ...

  3. js encodeurl java接收_在JS中encodeURI(url)怎样才能不出现乱码?

    这次给大家带来在JS中encodeURI(url)怎样才能不出现乱码?,在JS中使用encodeURI(url)的注意事项有哪些,下面就是实战案例,一起来看一下. 一般情况下, 发送 encodeUR ...

  4. node.js中的url.parse方法

    学习node.js中的url.parse方法 文章目录 前言 一.URL模块之parse方法详解 1.参数 2.实例 例子1:url.parse只传一个参数的情况 例子2:url.parse第二个参数 ...

  5. Python 中的url,Base64和MD5编码解码的使用

    1.encode()和decode() 我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes(字节). 所以当我们在Python中进行加密操作的时候,要确保 ...

  6. 关于将URL中的特殊字符进行转码和解码

    当前开发中,遇到特殊情况: 使用url进行跨页面(跨域)传值的时候,会出现某些带特殊字符的url,在浏览器上被处理了,例如: 后端传给前端的跳转路径: http://127.0.0.1:8088/ha ...

  7. JS中获取URL中参数的4种方法

    方法一:正则 function getQueryString(name) {var reg = new RegExp('(^|&)' + name + '=([^&]*)(&| ...

  8. js中请求URL获得json数据,将数据解析并建表插入

    //打开数据库 var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); //html请求数据 function testXm ...

  9. 为什么js中要用void 0 代替undefined

    这个是Backbone.js中的一句源码 if (callback !== void 0 && 'context' in opts && opts.context == ...

  10. java backbone_在Backbone.js中发出POST请求

    我有一个RESTful服务器,它接受url编码的参数 . 就我而言,发帖请求https://我的服务器:8443 / test / auth 将请求标头设置为Content-Type:applicat ...

最新文章

  1. SQL SERVER 数据库实用SQL语句
  2. vue处理json数据的原理_Vue解析json数据的渲染
  3. 刘烨:家里官方语言是中文 听不懂娘仨说法语
  4. 排序算法之递归算法(归并排序)
  5. 2019最新C语言知识整理小白进来看看??
  6. 作业帮电脑版在线使用_一起作业学生app 手机版免费在线下载
  7. java中为什么不能强制转换_为什么Java中的强制转换异常致命?
  8. 学会使用JDK API
  9. 无setup.exe情况下安装mysql5.7.28(win10)
  10. 交换机短路_交换机日常怎么运行维护?一文告诉你
  11. 8.Linux/Unix 系统编程手册(上) -- 用户和组
  12. 数据加密技术之加密算法
  13. 读计算机基础知识心得体会1000字,计算机学习个人心得体会1000字.doc
  14. python爬虫代码运行_怎么运行python爬虫程序
  15. 演讲的思路锻炼,逆向思维需要刻意练习吗?
  16. b站python_python学习 —— B站抢楼原理
  17. 如何入门多视角人脸正面化生成?不得不看的超详细最新综述!
  18. 22牛客多校5 - Don‘t Starve(DP,依靠边更新端点)
  19. word文档中统计总页数_如何在Google文档中查找页数和字数统计
  20. 史上最强HashMap面试教程

热门文章

  1. 优秀文章收集,也有专题,改变了我的一些看法。
  2. 重读博弈论(八)---海萨尼转换与贝叶斯法则
  3. 宇宙最强vscode教程(基础篇)
  4. swift oc UIimage 和 NSString 互相转换
  5. IDEA 和 Eclipse 使用对比
  6. ( # #@ ## 在define中的应用)或( 连接两个字符串或者两个数字、强制转化成单引号、强制转化成双引号 )附加字符串强制转化成数字...
  7. Mac Pro 使用 ll、la、l等ls的别名命令
  8. 从副总裁做”表哥“说起
  9. 7.TCP/IP 详解卷1 --- Ping 程序
  10. 4. Firebug 调试 Js