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 Analyser

    首先,需要明确一下JavaScript分析、压缩工具的作用。JavaScript分析、压缩工具是一种能够对JavaScript代码进行分析、优化、压缩的工具。使用该工具,可以减少JavaScript代码的体积,从而提高页面的加载速度。 下面是使用JavaScript分析、压缩工具的完整攻略: 1. 安装JavaScript分析、压缩工具 目前比较流行的Jav…

    JavaScript 2023年5月27日
    00
  • JS DOM实现鼠标滑动图片效果

    JS DOM实现鼠标滑动图片效果可以分为以下几个步骤: 步骤一:HTML结构 首先,需要在HTML中编写需要实现滑动效果的图片。例如: <div class="image-box"> <img src="image1.jpg"> <img src="image2.jpg&quot…

    JavaScript 2023年6月10日
    00
  • JavaScript数组push方法使用注意事项

    JavaScript中的数组是一种常用且非常灵活的数据结构,它可以利用push方法向数组中添加元素。但是,在使用JavaScript数组的push方法时,需要注意以下几个方面: 1. push方法用法 数组的push方法用于向数组添加元素,语法格式如下: array.push(element1, element2, …, elementN); 其中,el…

    JavaScript 2023年5月27日
    00
  • JavaScript实现自动弹出窗口并自动关闭窗口的方法

    要实现自动弹出窗口并自动关闭窗口,可以使用JavaScript的定时器和窗口对象的方法。具体步骤如下: 一、弹出窗口 使用window.open()方法在浏览器中弹出一个新窗口。 window.open("http://www.example.com", "example", "width=300,heigh…

    JavaScript 2023年6月11日
    00
  • Javascript中常见的逻辑题和解决方法

    下面是Javascript中常见的逻辑题和解决方法的完整攻略。 一、逻辑题 在Javascript中,经常会遇到一些逻辑题。这些题通常要求我们根据给定的条件,编写相应的代码实现目标功能。下面是两个常见的逻辑题示例: 1. 反转字符串 给定一个字符串,如何将其反转输出? 样例 输入:”hello world”输出:”dlrow olleh” 2. 找出数组中的…

    JavaScript 2023年6月10日
    00
  • js实现下载(文件流式)方法详解与完整实例源码

    首先,需要明确一点,下载文件大多数情况下需要后端接口进行配合,前端只需要向后端发起下载请求即可。本文介绍的js实现文件下载,是通过向后端接口发起请求获取文件流,再通过js实现文件的下载。 如何下载文件 实现文件下载的方式有很多,其中一种较为简单的方式是使用a标签进行下载。例如: <a href="http://example.com/file…

    JavaScript 2023年5月27日
    00
  • JS实现十分钟倒计时代码实例

    下面是详细讲解“JS实现十分钟倒计时代码实例”的完整攻略。 一、需求分析 首先,我们需要明确需求:实现一个倒计时功能,从10分钟开始倒计时,并在倒计时结束时触发一段特定的操作。 二、技术选型 接下来,我们需要选型。考虑到要实现一个网页上的倒计时,我们选用JavaScript作为主要开发语言,并采用HTML和CSS作为配套技术。 三、代码实现 首先,在HTML…

    JavaScript 2023年5月27日
    00
  • vue实现微信浏览器左上角返回按钮拦截功能

    介绍:Vue可以通过使用路由导航守卫来拦截某些操作,其中之一就是拦截微信浏览器左上角的返回按钮。本攻略将详细介绍如何使用Vue及路由导航守卫实现微信浏览器左上角返回按钮的拦截功能。 步骤: 1.安装Vue Router 安装Vue Router是实现路由动态跳转的必要前提。使用npm或yarn,运行以下命令: npm install vue-router O…

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