资讯专栏INFORMATION COLUMN

关于URL编码

HitenDev / 3244人阅读

摘要:基本概念编码不能直接使用需要编码领杉果红包,享更多优惠点击领取问题的由来就是网址只要上网就一定会用到只有字母和数字一些特殊符号以及某些保留字才可以不经过编码直接用于这意味着如果中有汉字就必须编码后使用但是麻烦的是没有规定具体的编码方

基本概念

1.encodeComponent编码url,url不能直接使用,需要编码

var rlt = "http://service.weibo.com/share/share.php?";
var url = "http://www.baidu.com";
var params = {
    appkey: "379570494",
    title: "领杉果红包,享更多优惠!点击领取:",
    url: url
};
for (var i in params) {
    rlt += i + "=" + params[i] + "&";
}
for (var i in params) {
    rlt += i + "=" + encodeURIComponent(params[i]) + "&";
}
console.log(rlt);
问题的由来

1.URL就是网址,只要上网,就一定会用到.
只有字母和数字[0-9a-zA-Z],一些特殊符号$-_.+!*"(),以及某些保留字,才可以不经过编码直接用于URL.
2.这意味着,如果URL中有汉字,就必须编码后使用,但是麻烦的是,RFC1738没有规定具体的编码方法,
而是交给应用程序(浏览器)自己决定,这导致"URL编码"成为了一个混乱的领域.
3.包括:ajax请求url地址,浏览器上直接用get或post发出http请求,网址路径中包含汉字,查询字符串包含汉字.
4.使用js先对URL编码,然后再向服务器提交,不给浏览器插手的机会,
因为js的输出总是一致的,所以就保证了服务器得到的数据是格式统一的.

escape,unescape

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

encodeURI和decodeURI

1.encodeURI()是js中真正用来对URL编码的函数
2.它着眼于对整个URL进行编码,因此除了常见的符号以外,对其他一些在网址中有特殊含义的符号;/?:@&=+$,#也不进行编码,
编码后,它输出符号的utf-8形式,并且在每个字节前加上%

encodeURIComponent和decodeURIComponent

与encodeURI()的区别是,它用于对URL的组成部分进行个别编码,而不用于对整个URL进行编码.
因此,;/?:@&=+$,#这些在encodeURI()中不被编码的符号,在encodeURIComponent中统统会被编码.

var test = "http://www.baidu.com/my app?search=a&b=3#2哈哈";
var test1 = encodeURIComponent(test);
var test2 = encodeURI(test);
console.log(test);  // http://www.baidu.com
console.log(test1); // http%3A%2F%2Fwww.baidu.com%2Fmy%20app%3Fsearch%3Da%26b%3D3%232%E5%93%88%E5%93%88,浏览器无法解析这个地址
console.log(test2); // http://www.baidu.com/my%20app?search=a&b=3#2%E5%93%88%E5%93%88,浏览器无法解析这个地址

var test3 = decodeURIComponent(test1);
var test4 = decodeURI(test2);
console.log(test3);
console.log(test4);

var test5 = escape(test);
var test6 = unescape(test5);
console.log(test5); // http%3A//www.baidu.com/my%20app%3Fsearch%3Da%26b%3D3%232%u54C8%u54C8
console.log(test6); // http://www.baidu.com/my app?search=a&b=3#2哈哈

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/84387.html

相关文章

  • JS基础篇--JS对url进行编码和解码(三种方式区别)

    摘要:它的具体规则是,除了字母数字标点符号以外,对其他所有字符进行编码。对应的解码函数是。其次,不对编码。与的区别是,它用于对的组成部分进行个别编码,而不用于对整个进行编码。因此,,这些在中不被编码的符号,在中统统会被编码。 Javascript语言用于编码的函数,一共有三个,最古老的一个就是escape()。虽然这个函数现在已经不提倡使用了,但是由于历史原因,很多地方还在使用它,所以有必要...

    xiaoxiaozi 评论0 收藏0
  • 我的第一个小程序(Discuz! + 微信小程序)

    摘要:微信小程序开发官方文档,正在开发的小程序的源码,都给了我不少启发到小程序上富文本的解析一个优秀的开源项目微信小程序富文本解析组件作用在于解析你论坛上的帖子内容,你论坛上加粗的文字,加了颜色的文字,图片等等,都可以原原本本的展示在小程序中。 关于这个小程序 Github : https://github.com/DowneyL/di...‘ 这个小程序是公司针对一个自家产品的需求,而这个...

    YacaToy 评论0 收藏0
  • css编码技巧【css揭秘读书笔记】

    摘要:最近在看揭秘,于是写了文章来作笔记,除此以外还会补充一些自己遇到的笔试题。举例说明以上的代码有什么问题呢如果需要改变字号,那么同时需要调整行高。那么经过修改后的代码如下关于使用还是还是百分比,需要根据具体情况来决定。 最近在看《css揭秘》,于是写了文章来作笔记,除此以外还会补充一些自己遇到的笔试题。希望大家都有所收获。 css编码技巧 尽量减少代码重复 在实践中,代码可维护性的最大要...

    Miyang 评论0 收藏0
  • 关于使用WeUI在IE中提示“font-face 未能完成 OpenType 嵌入权限检查。权限必须

    摘要:是中定义字体的规则。首先,在使用时,在下没有问题,但是在下提示未能完成嵌入权限检查。访问,将编码转换为文件,这里命名为。保存并浏览器刷新后,中不再提示错误。@font-face是css3中定义字体的规则。 首先,在使用weui时,在Chrome、Firefox下没有问题,但是在IE下提示“font-face 未能完成 OpenType 嵌入权限检查。权限必须是可安装的&rdquo...

    番茄西红柿 评论0 收藏0
  • 如何使用Python制作网络爬虫

    摘要:在近几年迅速咋程序界掀起了不小的波澜,而关于的第三库也使广大程序员趋之若鹜,今天我们就由浅入深的探讨一下如何使用做一个网络爬虫来抓取一些页面信息。 Python在近几年迅速咋程序界掀起了不小的波澜,而关于python的第三库也使广大程序员趋之若鹜,今天我们就由浅入深的探讨一下如何使用python做一个网络爬虫来抓取一些页面信息。今天我们使用的库(包含python自身携带的库和第三库) ...

    时飞 评论0 收藏0

发表评论

0条评论

HitenDev

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<