深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例

yizhihongxing

深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例

在JavaScript中,编码与解码字符串是非常常见的操作。对于URL、HTML等特殊字符的处理,我们通常会使用escape()、encodeURI()、encodeURIComponent()这几个函数,它们虽然都是编码函数,但是处理的范围和方式各不相同。

escape()

escape()函数可以编码字符串中的非ASCII字符,例如中文、日文、朝鲜文等,它使用16进制序列表示每个字符,并在前面加上%作为前缀;对于ASCII字符,它不会进行编码。需要注意的是,由于escape()函数使用的是16进制序列,对于单层URL编码,它并不适用。此外,该函数已经被废弃,推荐使用encodeURIComponent()替代。

例子1

escape('hello, 世界')
// 返回 "hello%2C%20%E4%B8%96%E7%95%8C"

encodeURI()

encodeURI()函数主要用于编码URL中的特殊字符,例如空格、&、=等。它可以对除ASCII字母和数字(A-Za-z0-9)以及特殊字符$-_.+!*'()以外的字符进行编码,使用%转义字符,将非英文字母与数字的字符编码为URI格式。需要注意的是,它并不会对完整的URL进行编码,例如:http://www.example.com/dir1/#hash1 和 http://www.example.com/dir2/#hash2 是两个不同的URL,而encodeURI()只会编码其中的特殊字符,例如:http://www.example.com/dir1/#hash1 会被编码为 http://www.example.com/dir1/#hash1 ,而不会变成 http%3A%2F%2Fwww.example.com%2Fdir1%2F%23hash1。

例子2

encodeURI('http://www.example.com/q?name=石子峻&age=18')
// 返回 "http://www.example.com/q?name=%E7%9F%B3%E5%AD%90%E5%B3%8C&age=18"

encodeURIComponent()

encodeURIComponent()函数相对于encodeURI()更为严格,它除了对ASCII字母和数字不进行编码外,会对其他所有字符进行编码(只有RFC2396定义中未保留的字符才会被编码),即它会将所有的特殊字符、汉字等都进行编码,并使用%进行替换。因此,在编码过程中应该优先考虑encodeURIComponent()。

例子3

encodeURIComponent('http://www.example.com/q?name=石子峻&age=18')
// 返回 "http%3A%2F%2Fwww.example.com%2Fq%3Fname%3D%E7%9F%B3%E5%AD%90%E5%B3%8C%26age%3D18"

总结

escape()、encodeURI()和encodeURIComponent()都是JavaScript中用于编码字符串的函数。其中,escape()已经被废弃,而encodeURI()主要用于编码URL中的特殊字符,encodeURIComponent()则更为严格,除了对ASCII字母和数字不进行编码,会对其他所有字符进行编码,并使用%进行替换。我们使用这些编码函数可防止出现编码不正确从而导致的各种莫名其妙的错误。需要根据具体的需求来选择使用哪一个函数进行编码。

例子4

比如一个提交表单的时候需要对参数进行编码,可以使用encodeURIComponent()来确保参数的正确性。示例代码如下:

// 假设表单中有两个参数name和age,需要提交到后端
const name = document.querySelector('#name').value // 假设name值为"张三"
const age = document.querySelector('#age').value // 假设age值为18
const url = `http://www.example.com/api?name=${encodeURIComponent(name)}&age=${encodeURIComponent(age)}` // 对name和age进行encodeURIComponent()编码
fetch(url)
  .then(res => res.json())
  .then(data => console.log(data))
  .catch(err => console.error(err))

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 手淘flexible.js框架使用和源代码讲解小结

    手淘flexible.js框架使用和源代码讲解小结 什么是flexible.js flexible.js是淘宝移动端自适应布局的解决方案之一。它主要实现的功能是:根据不同的屏幕宽度动态设置标签的字体大小,从而实现移动端页面的自适应布局。 使用方法 使用flexible.js,只需要在页面头部引入flexible.js即可。 <script src=&q…

    JavaScript 2023年6月11日
    00
  • vue-cli3+typescript新建一个项目的思路分析

    下面我将给你详细讲解“vue-cli3+typescript新建一个项目的思路分析”的完整攻略: 1. 确定项目名称和路径 首先,你需要在你的电脑上安装 Node.js 和 Vue CLI。假设你已经完成这些步骤,那么接下来你需要确定你的项目名称和路径。在这里,我们假设你的项目名称为 “my-vue-project”,你希望将其放在桌面上的 “project…

    JavaScript 2023年6月11日
    00
  • 原生JavaScript实现合并多个数组示例

    下面我将详细介绍如何使用原生JavaScript实现合并多个数组。 1. 简单粗暴的方法 我们可以使用concat()函数将多个数组合并成一个: let arr1 = [1, 2, 3]; let arr2 = [4, 5, 6]; let arr3 = [7, 8, 9]; let arr = arr1.concat(arr2, arr3); consol…

    JavaScript 2023年5月27日
    00
  • Three.js快速入门教程

    下面是”Three.js快速入门教程”的完整攻略,涵盖了安装Three.js、创建场景、添加网格、添加光源、渲染场景等基本步骤。 1. 安装Three.js 在使用Three.js之前,我们需要先将其引入项目中。可以通过以下两种方式来引入: 下载Three.js的源文件到本地并且引入: “`html 2. 在需要使用Three.js的文件中使用CDN地址:…

    JavaScript 2023年5月28日
    00
  • 给ListBox添加双击事件示例代码

    给ListBox添加双击事件的步骤如下: 1. 添加事件处理方法 在窗体的代码文件中,找到窗体类中的初始化代码(通常是InitializeComponent方法)。 在该方法的末尾添加以下代码,为ListBox对象添加一个名为DoubleClick的事件处理方法: this.listBox1.DoubleClick += new System.EventHa…

    JavaScript 2023年6月11日
    00
  • 盘点javascript 正则表达式中 中括号的【坑】

    盘点 JavaScript 正则表达式中中括号的【坑】 在使用 JavaScript 正则表达式时,中括号 […] 是非常常见也非常重要的语法,它可以用于匹配一组字符中的任意一个字符。但是,在使用中括号时,也需要注意一些坑点。 1. 中括号中的 – 的意义 在中括号中如果使用 – 连接两个字符,表示匹配范围,例如 [0-9] 表示匹配 0 到 9 之间的…

    JavaScript 2023年6月10日
    00
  • js中怎么判断两个字符串相等的实例

    判断两个字符串是否相等是编程中经常涉及到的问题,JavaScript中也提供了多种方法来实现字符串的比较。下面是两个示例来说明如何使用JavaScript判断两个字符串相等。 示例一:使用===比较运算符 使用===比较运算符可以判断两个字符串是否完全相等,包括字符串的值和类型。如果两个字符串完全相等,则返回true,否则返回false。 const str…

    JavaScript 2023年5月28日
    00
  • 一个不错的可以检测多中浏览器的函数和其它功能第2/2页

    函数概述 这是一个可以检测多种浏览器的 JavaScript 函数,它可以帮助你判断当前的浏览器类型和版本号,并且还可以检测浏览器是否支持某些功能。这个函数定义比较长,但是使用起来非常方便。下面是这个函数的代码: function detectBrowser() { var ua = navigator.userAgent; var browserName;…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部