escape,encodeURI及encodeURIComponent的区别

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
   /**
    *   escape,encodeURI及encodeURIComponent的区别
    *   ----------------------------------------------
    *   为什么要对URI进行编码?
    *   例如URI “http://localhost:8080?name=sam&123”
    *
    **/

   /*
   为什么要对URI进行编码?
   URL参数字符串中使用key=value键值对这样的形式来传参,
   键值对之间以&符号分隔,但是如果value里面包含了&,服务器端会
   如何解析呢。
   */

   /*
    node server.js

    var http = require('http');
    var URL = require('url');
    http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'application/json'});
    var params = URL.parse(req.url, true).query;
    res.end(JSON.stringify(params));
    }).listen(8080);
    console.log('Server running on port 8080.');
   */

   /*
    URL="http://localhost:8080/?name=sam&123"
    解析结果:{"123":"","name":"sam"}
    http://localhost:8080/?name=sam%26123
    解析结果:{"name":"sam&123"}
    经过编码后的URL解析结果是我们想要的。
   */

    /*
     escape 对转义字符串或者普通字符串进行编码
     ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent() 替代它。
    */
    console.log(escape("\n"));
    //%0A
    console.log(escape("abc"));
    //abc
    /*
    unescape 解码
    */
    console.log(unescape("%0A"));
    //换行
    console.log(unescape("abc"));
    //abc

    /*
     encodeURI
     函数是不会进行转义的:;/?:@&=+$,#
     提示:如果 URI 组件中含有分隔符,比如 ? 和 #,则应当使用 encodeURIComponent() 方法分别对各组件进行编码。
     */
    console.log(encodeURI("http://www.w3school.com.cn"));
    //http://www.w3school.com.cn
    console.log(encodeURI("http://www.w3school.com.cn/My first/"));
    //http://www.w3school.com.cn/My%20first/
    console.log(encodeURI("http://www.w3school.com.cn?name=sam"));
    //http://www.w3school.com.cn?name=sam

    /*
     encodeURIComponent
     函数将转义用于分隔URI各个部分的标点符号。
     */
    console.log(encodeURIComponent("http://www.w3school.com.cn"));
    //http%3A%2F%2Fwww.w3school.com.cn
    console.log(encodeURIComponent("sam&123"));
    //sam%26123

</script>
</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 项目过程中,想到这几个概念的区别有些模糊,于是纵观各种资料,来篇博文为自己记录下,也为小伙伴们说说我的理解。 [c...
    罗小耳阅读 3,923评论 4 13
  • 98年,那年法国世界杯。我只知道湖北黄冈,我只知道巴西和大罗。但是最后巴西却输给了法国,我那时觉得,一定是有黑幕,...
    MR27149阅读 239评论 0 1
  • 1. 室友L这两天趁周末回宿舍了,她在某市的一所小学里已经实习了一个月。和她坐在食堂里聊天时,我才了解到,原来出去...
    开要心阅读 592评论 0 3
  • ——她不再和谁谈论相逢的孤岛,因为心里早已荒无人烟。 第一次见面的时候,她散着头发,一个人静静地收拾自己的东...
    丫丫_Amanda阅读 386评论 0 1
  • 有时候我很难想象自己30岁是什么样子,对待生活是什么态度,对待家庭婚姻是什么心态,对待事业是不是还是这么认真,对待...
    我是莯心阅读 1,336评论 0 2