js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解

当我们在编写JavaScript时,常常需要处理字符串。在这个过程中,我们可能需要对字符串进行编码以保证其正确解析。以下是escape()、encodeURI()和encodeURIComponent()编码函数的详解和区别:

escape()

escape()函数将字符串转换为UTF-8编码格式,并将一些特殊字符,例如@、空格、+、/、:、等符号转换为十六进制的字符串。这样做是为了避免URL出现一些不符合规范的字符。

对于非 ASCII 字符,escape() 函数将其编码为 “%u*” 格式,其中*是字符的 Unicode 编码值的十六进制表示。例如,汉字 "你好" 在 escape() 函数中编码为 "%u4F60%u597D"。这种编码方式在URL中的作用非常有限,实际上很少使用。

以下是一个使用escape()函数的示例:

let str1 = 'Hello World@+ / ';
let encodedStr1 = escape(str1);
console.log(encodedStr1); //"Hello%20World%40%2B%20%2F%20"

encodeURI()

encodeURI() 函数用于对URL中的字符进行编码,用于URL中的值、参数、等内容。在它的作用范围内,只有空格、@、#、$、&、+、,、/、;、=、?、以及Unicode编码的字符。所有其他的字符都将被保持不变。

以下是一个使用encodeURI()函数的示例:

let url1 = "https://www.example.com/?id=100&name=Tom's Blog";
let encodedUrl1 = encodeURI(url1);
console.log(encodedUrl1);  //"https://www.example.com/?id=100&name=Tom's%20Blog"

encodeURIComponent()

encodeURIComponent() 函数和encodeURI()很像,但是更加强制地使用编码方式,对于满足URI规则的字符,我们并不想对它们进行编码,因为我们需要这些字符来构造URL,但是对于标点符号和其他字符,仍然需要被进行编码,否则可能会对URL解析造成影响。

以下是一个使用encodeURIComponent()函数的示例:

let url2 = 'https://search.com/result?q=javascript&t=hello world';
let encodedUrl2 = encodeURIComponent(url2);
console.log(encodedUrl2);  //"https%3A%2F%2Fsearch.com%2Fresult%3Fq%3Djavascript%26t%3Dhello%20world"

综上所述,这三个编码函数有其各自的使用场景,具体使用时需要根据情况进行选择。需要注意,对于URL中的路径、参数、以及其他协议都有各自的字符集规范,所以在使用这些函数时一定要特别注意。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解 - Python技术站

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

相关文章

  • JS查找数组中重复元素的方法详解

    JS查找数组中重复元素的方法详解 在 JavaScript 中,有多种方式可以查找一个数组中的重复元素。下面将介绍几种常见的方法。 方法一:使用双重循环 这是最基本的方法之一,它的时间复杂度是 O(n^2)。具体的实现方法如下: const arr = [1, 2, 3, 4, 5, 6, 7, 7, 8, 9]; for (let i = 0; i &lt…

    JavaScript 2023年5月27日
    00
  • 微信小程序使用navigator实现页面跳转功能

    下面我将为你详细讲解“微信小程序使用navigator实现页面跳转功能”的完整攻略。 1. navigator简介 navigator是微信小程序中的一个组件,用于实现页面跳转功能。可以将navigator理解为H5中的超链接,通过点击跳转到不同的页面。 2. navigator的使用步骤 步骤一:在 app.json 中配置页面路径 在 app.json …

    JavaScript 2023年6月11日
    00
  • 动态设置form表单的action属性的值的简单方法

    动态设置form表单的action属性的值的简单方法,可以使用JavaScript来完成。以下是具体步骤: 步骤一:获取form表单对象 在JavaScript中,我们通过document.forms对象获取页面上所有的form表单。如果我们只有一个form表单,可以直接通过document.forms[0]来获取它,如果有多个form表单,可以通过获取特定…

    JavaScript 2023年6月10日
    00
  • 比较简洁的JavaScript 实时显示时间的脚本 修正版

    首先,我们需要明确一下我们要完成的目标,即实时显示时间的脚本。这个脚本需要使用 JavaScript 语言来完成。 以下是使用 Markdown 编写的完整攻略: 简洁的 JavaScript 实时显示时间的脚本 修正版 目标 本文主要介绍如何使用 JavaScript 语言编写简洁的实时显示时间的脚本。我们的目标是通过代码实现一个时钟功能,可以动态地显示当…

    JavaScript 2023年5月27日
    00
  • JavaScript接口的实现三种方式(推荐)

    下面是关于“JavaScript接口的实现三种方式(推荐)”的详细攻略: 什么是JavaScript接口? JavaScript接口是指一种约定,它定义了一个或多个方法或属性,用于描述某个对象或类应该具备的行为和特征。JavaScript接口常用于实现对象的多态性和抽象性,从而增强代码的可扩展性和可维护性。 JavaScript接口的实现方式 下面介绍三种常…

    JavaScript 2023年5月27日
    00
  • JSON获取属性值方法代码实例

    下面就让我来详细讲解一下关于“JSON获取属性值方法代码实例”的完整攻略。 什么是JSON? JSON(JavaScript Object Notation)是一种基于文本的轻量级数据交换格式,它采用键值对的方式存储数据。JSON常用于前后端数据的传输和存储。它的优点是易于阅读和编写,同时还具有跨语言交互性、可嵌套等特点。在Web开发中,我们经常需要通过解析…

    JavaScript 2023年5月27日
    00
  • 详解webpack-dev-server使用http-proxy解决跨域问题

    Webpack-dev-server 是 webpack 中提供的一个开发服务器,使我们可以在开发环境中快速开发,通过 webpack-dev-server 实现的 HMR(hot module replacement)功能,可以很方便的在不刷新浏览器页面的情况下实现模块热替换,极大地提升了开发效率。 在开发过程中,我们经常需要和服务器端进行 API 接口的…

    JavaScript 2023年6月11日
    00
  • JavaScript作用域链实例详解

    JavaScript作用域链实例详解攻略 什么是作用域链 在JavaScript中,每一个执行上下文都有一个与之相关的作用域链。作用域链其实就是一条有序列表,它包含了当前执行上下文中所有可访问的变量对象和函数的引用。当JavaScript引擎查找变量时,就会沿着作用域链逐级查找,直到找到为止。如果在整个作用域链上没有找到该变量,则会报ReferenceErr…

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