【定义+用法+区别+使用场景】escape(),encodeURI(),encodeURIComponent()
文章目录
- 一、escape
- 二、encodeURI
- 三、encodeURIComponent
- 四、encodeURI和encodeURIComponent的不同点
- 五、使用场合
一、escape
escape是对字符串进行编码
作用:让它们在所有电脑上可读
已废弃\color{#ea4335}{已废弃}已废弃: 该特性已经从 Web 标准中删除,虽然一些浏览器目前仍然支持它,但也许会在未来的某个时间停止支持,请尽量不要使用该特性。
废弃的 escape() 方法生成新的由十六进制转义序列替换的字符串. 使用 encodeURI 或 encodeURIComponent 代替.
二、encodeURI
encodeURI() 函数通过将特定字符的每个实例替换为一个、两个、三或四转义序列来对统一资源标识符 (URI) 进行编码
encodeURI 会替换所有的字符,但不包括以下字符,即使它们具有适当的UTF-8转义序列:
类型 | 包含 |
---|---|
保留字符 | ; , / ? : @ & = + $ |
非转义的字符 | 字母 数字 - _ . ! ~ * ’ ( ) |
数字符号 | # |
三、encodeURIComponent
encodeURIComponent()函数通过将一个,两个,三个或四个表示字符的UTF-8编码的转义序列替换某些字符的每个实例来编码 URI(二者定义基本相同)
encodeURI 会替换所有的字符,但不包括以下字符,即使它们具有适当的UTF-8转义序列:
类型 | 包含 |
---|---|
非转义的字符 | 字母 数字 - _ . ! ~ * ’ ( ) |
所以encodeURIComponent比encodeURI编码的范围更大。
四、encodeURI和encodeURIComponent的不同点
var set1 = ";,/?:@&=+$"; // 保留字符
var set2 = "-_.!~*'()"; // 不转义字符
var set3 = "#"; // 数字标志
var set4 = "ABC abc 123"; // 字母数字字符和空格console.log(encodeURI(set1)); // ;,/?:@&=+$
console.log(encodeURI(set2)); // -_.!~*'()
console.log(encodeURI(set3)); // #
console.log(encodeURI(set4)); // ABC%20abc%20123 (the space gets encoded as %20)console.log(encodeURIComponent(set1)); // %3B%2C%2F%3F%3A%40%26%3D%2B%24
console.log(encodeURIComponent(set2)); // -_.!~*'()
console.log(encodeURIComponent(set3)); // %23
console.log(encodeURIComponent(set4)); // ABC%20abc%20123 (the space gets encoded as %20)
从上述代码可以看出,与encodeURI相比,encodeURIComponent会对保留字符和数字标志进行转义
五、使用场合
- 假定一个URI是完整的URI,那么使用encodeURI\color{#ea4335}{encodeURI}encodeURI对无需对那些保留的并且在URI中有特殊意思的字符进行编码。
- 在GET和POST请求中,使用encodeURIComponent\color{#ea4335}{encodeURIComponent}encodeURIComponent这个方法会对这些字符编码
必要性:为了避免服务器收到不可预知的请求,对任何用户输入的作为URI部分的内容你都需要用encodeURIComponent进行转义。
原因:
假如一个用户输入了"abc&time=123"作为填入comment变量的一部分,若不使用encodeURIComponent进行转义,服务器将得到的是component=abc&time=123。此时服务器得到两个键值对,因此出现参数错误,故在对用户输入的内容进行转义时,必须使用encodeURIComponent()函数
参考链接:
- https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
- https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/encodeURI
- https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/escape
【定义+用法+区别+使用场景】escape(),encodeURI(),encodeURIComponent()相关推荐
- escape,encodeURI,encodeURIComponent有什么区别?
一.escape escape是对字符串进行编码,使得可以在所有的电脑上可读,但是encodeURI和encodeURIComponent是对URL进行编码的.escape和后两者几乎没关系. esc ...
- url的三个js编码函数escape(),encodeURI(),encodeURIComponent()简介
转载地址:http://www.haorooms.com/post/js_escape_encodeURIComponent 引子 浏览器URl地址,上网一定会用到,但是浏览器地址有中文或者浏览器ur ...
- url的三个js编码函数escape(),encodeURI(),encodeURIComponent()简介【转】
引子 浏览器URl地址,上网一定会用到,但是浏览器地址有中文或者浏览器url参数操作的时候,经常会用到encodeURIComponent()和decodeURIComponent()以及encode ...
- js 编码解码 escape,encodeURI,encodeURIComponent
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 1 ...
- js 文字转码 escape,encodeURI,encodeURIComponent(marksheng)
js对文字进行转码的3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 1. ...
- [转]js escape,encodeURI,encodeURIComponent
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 1 ...
- JS中URL中的特殊字符问题:escape,encodeURI,encodeURIComponent(转)
在使用url进行参数传递时,经常会传递一些中文名(或含有特殊字符)的参数或URL地址,在后台处理时会发生转换错误.在有些传递页面使用GB2312,而在接收页面使用UTF8,这样接收到的参数就可能会与原 ...
- URL转码escape() encodeURI() encodeURIComponent()
转:http://deony2jacob1314.iteye.com/blog/1753068 js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent, ...
- js uri解码_js进行URL编码(escape,encodeURI,encodeURIComponent)
如果URL存在汉字时,很容易出现乱码的现象.这是WEB开发中非常常见的一个问题. 不过由于笔者开发中比较注意各类文件的编码统一(即保持所有HTML,CSS,js的文件编码与页中的META中指定的编码一 ...
最新文章
- Xilinx FPGA 仿真环境设置(ISE + Modelsim + Debussy)
- 基础知识很扎实 - 但是面试就是做不出来, 怎么办? (长, 慎入)
- 信息学奥赛一本通 1133:输出亲朋字符串 | OpenJudge NOI 1.7 05
- MYSQL MYSQLI PDO
- 游戏音效下载网站大全
- 在Win7系统中如何安装PDF虚拟打印机
- Python读取PDF文档并翻译
- [渝粤教育] 天水师范学院 地理信息系统原理与方法 参考 资料
- html中ul和li是什么单位,html中ul,ol和li的区别
- 蜡笔小新-java-map
- 【兴趣书签】让人深陷其中的科幻小说
- Java首选项Preferences
- BZOJ 2144 跳跳棋(LCA+欧几里德+二分答案)
- filezilla,怎么下载filezilla
- 写给自己 NOI2012流水帐
- go语言中的type关键字
- echo命令详细解析(linux中超级详细,图文展示)
- TargetSdkVersion升级到30后,安卓11手机上,apk解析失败
- Unity3d 与罗技G29交互
- java导入xmind的坑及解决方案