文章目录

  • 一、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会对保留字符和数字标志进行转义

五、使用场合

  1. 假定一个URI是完整的URI,那么使用encodeURI\color{#ea4335}{encodeURI}encodeURI对无需对那些保留的并且在URI中有特殊意思的字符进行编码。
  2. 在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()相关推荐

  1. escape,encodeURI,encodeURIComponent有什么区别?

    一.escape escape是对字符串进行编码,使得可以在所有的电脑上可读,但是encodeURI和encodeURIComponent是对URL进行编码的.escape和后两者几乎没关系. esc ...

  2. url的三个js编码函数escape(),encodeURI(),encodeURIComponent()简介

    转载地址:http://www.haorooms.com/post/js_escape_encodeURIComponent 引子 浏览器URl地址,上网一定会用到,但是浏览器地址有中文或者浏览器ur ...

  3. url的三个js编码函数escape(),encodeURI(),encodeURIComponent()简介【转】

    引子 浏览器URl地址,上网一定会用到,但是浏览器地址有中文或者浏览器url参数操作的时候,经常会用到encodeURIComponent()和decodeURIComponent()以及encode ...

  4. js 编码解码 escape,encodeURI,encodeURIComponent

    js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 1 ...

  5. js 文字转码 escape,encodeURI,encodeURIComponent(marksheng)

    js对文字进行转码的3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 1. ...

  6. [转]js escape,encodeURI,encodeURIComponent

    js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 1 ...

  7. JS中URL中的特殊字符问题:escape,encodeURI,encodeURIComponent(转)

    在使用url进行参数传递时,经常会传递一些中文名(或含有特殊字符)的参数或URL地址,在后台处理时会发生转换错误.在有些传递页面使用GB2312,而在接收页面使用UTF8,这样接收到的参数就可能会与原 ...

  8. URL转码escape() encodeURI() encodeURIComponent()

    转:http://deony2jacob1314.iteye.com/blog/1753068 js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent, ...

  9. js uri解码_js进行URL编码(escape,encodeURI,encodeURIComponent)

    如果URL存在汉字时,很容易出现乱码的现象.这是WEB开发中非常常见的一个问题. 不过由于笔者开发中比较注意各类文件的编码统一(即保持所有HTML,CSS,js的文件编码与页中的META中指定的编码一 ...

最新文章

  1. Xilinx FPGA 仿真环境设置(ISE + Modelsim + Debussy)
  2. 基础知识很扎实 - 但是面试就是做不出来, 怎么办? (长, 慎入)
  3. 信息学奥赛一本通 1133:输出亲朋字符串 | OpenJudge NOI 1.7 05
  4. MYSQL MYSQLI PDO
  5. 游戏音效下载网站大全
  6. 在Win7系统中如何安装PDF虚拟打印机
  7. Python读取PDF文档并翻译
  8. [渝粤教育] 天水师范学院 地理信息系统原理与方法 参考 资料
  9. html中ul和li是什么单位,html中ul,ol和li的区别
  10. 蜡笔小新-java-map
  11. 【兴趣书签】让人深陷其中的科幻小说
  12. Java首选项Preferences
  13. BZOJ 2144 跳跳棋(LCA+欧几里德+二分答案)
  14. filezilla,怎么下载filezilla
  15. 写给自己 NOI2012流水帐
  16. go语言中的type关键字
  17. echo命令详细解析(linux中超级详细,图文展示)
  18. TargetSdkVersion升级到30后,安卓11手机上,apk解析失败
  19. Unity3d 与罗技G29交互
  20. java导入xmind的坑及解决方案

热门文章

  1. mysql openfire,windows下openfire的安装配置 | 学步园
  2. POJ 1191 棋盘分割(区间DP)题解
  3. Webpack 学习记录
  4. [ python ] 多态
  5. nginx配置文件注释说明
  6. Codeforces 1041C(贪心+set)
  7. 2017-3-23校内训练
  8. .net系统自学笔记——数组
  9. 使用Bochs调试Linux kernel 随笔 -- 准备
  10. Web前端经典面试题-JavaScript