js字符编码函数区别分析

JS字符编码函数区别分析

在 JavaScript 中,有几个字符编码相关的函数。本篇文章将详细分析它们的区别。

escape()

escape() 函数将非 ASCII 字符和一些 ASCII 字符(如空格、句点、斜杠等)转换为一种特殊的编码格式,比如 %20 代表空格。常用于将一些特殊字符转换为 URL 字符串。

const str = 'Hello, world! 你好世界!';
console.log(escape(str)); // Hello%2C%20world%21%20%u4F60%u597D%u4E16%u754C%EF%BC%81

这里的 %2C 等编码都是按照 URL 编码规范进行编码的。其中 %20 是空格的 URL 编码表示方式。

escape() 主要存在以下两个问题:

  1. 不支持 Unicode 编码
  2. 与 URI 规范不一致

在实际开发中,为了避免上述问题,应该尽量使用 encodeURI()encodeURIComponent() 代替 escape() 函数。

encodeURI()

encodeURI() 函数用于将整个 url 进行编码,对应的 ASCII 字符會转换为 %xy 的形式。

const url = 'https://www.baidu.com/s?wd=Node.js';
console.log(encodeURI(url)); // https://www.baidu.com/s?wd=Node.js

可以发现,encodeURI() 函数对于空格并不会进行编码。

encodeURIComponent()

encodeURIComponent() 函数用于对 URL 中的参数进行编码。

const url = 'https://www.baidu.com/s?wd=Node.js';
console.log(url + '&q=Hello, world! 你好世界!'); 
// https://www.baidu.com/s?wd=Node.js&q=Hello, world! 你好世界!

console.log(url + '&q=' + encodeURIComponent('Hello, world! 你好世界!')); 
// https://www.baidu.com/s?wd=Node.js&q=Hello%2C%20world%21%20%u4F60%u597D%u4E16%u754C%EF%BC%81

以上代码中,第一次拼接 url 字符串时,直接将带有中文以及空格的字符串拼接在 url 后面,这样会引起 URL 的错误,可能会导致程序出现异常。而第二次拼接 url 字符串时,经过 encodeURIComponent() 函数编码后,可以正常请求。

总结

  • escape() 函数不支持 Unicode 编码,且与 URI 规范不一致,应使用 encodeURI()encodeURIComponent() 代替。
  • encodeURI() 函数将 URL 进行编码,并对一些 ASCII 字符不编码。
  • encodeURIComponent() 函数用于对 URL 参数进行编码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js字符编码函数区别分析 - Python技术站

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

相关文章

  • 经典Javascript正则表达式[优质排版]

    经典Javascript正则表达式 [优质排版] 正则表达式是Javascript中常用的字符串处理工具,学习好正则表达式能够提高我们处理字符串的效率,本文将带你深入学习Javascript中的正则表达式,同时介绍一些优质的排版技巧。 正则表达式字面量 正则表达式字面量是创建正则表达式的一种简写方式,字面量由两个斜杆之间的文本组成,例如: const reg…

    JavaScript 2023年6月10日
    00
  • 详释JavaScript执行环境与执行栈

    详解JavaScript执行环境与执行栈 执行环境 执行环境是指JavaScript代码的运行环境,它决定了哪些变量和函数可以被访问到。在JavaScript中,有两种类型的执行环境:全局执行环境和函数执行环境。 全局执行环境 全局执行环境是JavaScript代码默认运行的环境。它会在浏览器或Node.js环境中被创建,在整个应用程序的生命周期中都存在,并…

    JavaScript 2023年6月10日
    00
  • Javascript window对象详解

    Javascript window对象详解 window对象是JavaScript中的全局对象,它代表浏览器窗口或标签页。在网页中,我们经常使用window对象来操作浏览器窗口、加载新的文档等。 获取窗口的大小和位置 要获取窗口的大小和位置,我们可以使用window.innerWidth、window.innerHeight、window.outerWidt…

    JavaScript 2023年5月27日
    00
  • JavaScript高级教程5.6之基本包装类型(详细)

    JavaScript高级教程5.6之基本包装类型(详细) 基本包装类型介绍 JavaScript中有三种基本类型:Number、String和Boolean。它们是原始值,不是对象。但是,在读取它们的属性时,会创建临时的基本包装类型对象,以便能够访问属性和方法。一旦访问结束,立即销毁这个临时对象。这个临时对象的行为类似于对象类型的实例。 基本包装类型方法 在…

    JavaScript 2023年6月10日
    00
  • JavaScript将当前时间转换成UTC标准时间的方法

    JavaScript提供了多种方法将本地时间转换为UTC标准时间。本文将为你详细介绍一些最常用和最有效的方法。 方法1:使用Date对象的toUTCString()方法 使用Date对象的toUTCString()方法可以方便地将当前时间转换为UTC标准时间。 let d = new Date(); let utcString = d.toUTCString…

    JavaScript 2023年5月27日
    00
  • JS简单判断函数是否存在的方法

    当我们在编写JavaScript代码时,经常需要判断一个函数是否存在,以避免意外的“未定义”错误。以下是几种判断JavaScript函数是否存在的方法: 1. typeof typeof 运算符可以返回一个值的数据类型。如果一个变量的数据类型是函数,它的返回值将是 “function”。因此,我们可以使用 typeof 来判断一个函数是否存在: if (ty…

    JavaScript 2023年5月27日
    00
  • js字符串转换成数字与数字转换成字符串的实现方法

    JS 字符串转换成数字和数字转换成字符串分别涉及到 JS 数据类型的转换。下面,我们分别详细讲解这两种数据类型间的转换实现方法: JS 字符串转换成数字 JS 字符串转换成数字主要用到以下两个函数: 1. parseInt(string, radix) 这个函数将给定的字符串参数转换成整数类型,并返回其整数值。 string:需要被转换成整数的字符串 rad…

    JavaScript 2023年5月28日
    00
  • js中判断变量类型函数typeof的用法总结

    标题:JS中判断变量类型函数typeof的用法总结 1. typeof函数的介绍 typeof是JavaScript中的一个关键字,用于判断一个变量的类型。它返回一个字符串,表示变量的数据类型。需要注意的是,typeof运算符不是函数,括号可以省略。 普通变量的类型判断: let a = 1; console.log(typeof a); // number…

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