js字符编码函数区别分析

yizhihongxing

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实现一个日期控件的具体代码。 步骤一:HTML代码编写 首先,在HTML文件中创建一个input元素,用来显示选中的日期,同时给它一个id值。 <input type="text" id="dateInput"> 步骤二:CSS样式设置 接下来,给这个input元…

    JavaScript 2023年5月27日
    00
  • elementUI动态嵌套el-form表单校验举例详解

    ElementUI 动态嵌套 el-form 表单校验举例详解 简介 在 ElementUI 中,el-form 是常用的表单组件,用于进行数据录入和数据校验。但是,当表单复杂度较高,需要动态增加或删除表单项时,我们需要使用动态嵌套来实现。本篇文章将详细讲解 ElementUI 动态嵌套 el-form 表单校验的实现方法,包括基础使用方法、动态增加表单项、…

    JavaScript 2023年6月10日
    00
  • ES6 javascript中class静态方法、属性与实例属性用法示例

    ES6(ES2015)引入了Class(类)的概念,它是一种更加清晰、更加面向对象的编程方式。在使用Class的过程中,我们需要了解并掌握Class的静态方法、属性和实例属性的用法,本攻略将带来详细的讲解与示例。 1. 静态方法与属性 静态方法和属性是指属于类本身而不是属于实例的方法和属性。静态方法和属性可以直接通过类名进行调用,而不需要先实例化类的对象。下…

    JavaScript 2023年5月27日
    00
  • JS 实现倒计时数字时钟效果【附实例代码】

    JS 实现倒计时数字时钟效果是一个比较常见的前端特效,本文将为大家分享如何实现这个效果并附上实例代码。以下是完整攻略: 第一步:HTML 基础 首先,我们需要在 HTML 中创建一个数字时钟展示区域,可以选择一个 div 包含一个 h1 标签或者直接使用 h1 标签。具体代码如下: <div id="countdown-clock"…

    JavaScript 2023年5月27日
    00
  • ASP.NET回车提交事件浅析

    ASP.NET回车提交事件浅析 ASP.NET回车提交事件是指在文本框输入内容时,按下回车键将输入的内容提交到后台服务器进行处理的事件。在ASP.NET开发中,回车提交事件是非常常见且有用的事件之一,其能够方便用户快速地提交数据,提高用户体验。本文将针对ASP.NET回车提交事件的实现方式进行浅析,并提供相应的实例说明。 实现方式 实现ASP.NET回车提交…

    JavaScript 2023年6月10日
    00
  • 使用javascript做时间倒数读秒功能的实例

    下面是使用 JavaScript 做时间倒数读秒功能的完整攻略: 步骤一:HTML 结构 首先,在 HTML 中创建一个显示倒计时的容器。例如,可以创建一个包含类名为 countdown-timer 的 div 元素: <div class="countdown-timer"></div> 步骤二:CSS 样式 对…

    JavaScript 2023年5月27日
    00
  • js调试系列 初识控制台

    JS调试系列——初识控制台 什么是控制台 控制台是浏览器提供的调试工具,可以用来查看JavaScript代码的运行情况,如代码执行顺序,变量的值等。控制台可以输出信息,查看调用堆栈,进行代码地图等操作。Chrome浏览器的控制台是最为强大的。 打开控制台 在Chrome浏览器中,可以通过快捷键 Ctrl + Shift + J 打开控制台。也可以右键页面空白…

    JavaScript 2023年5月27日
    00
  • jQuery getJSON 处理json数据的代码

    下面我来详细讲解一下“jQuery getJSON 处理json数据的代码”的完整攻略。 什么是JSON数据 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它是基于JavaScript的一个子集,数据格式简单易读,易于编写和理解。 JSON 数据格式的示例如下: { "name": &quot…

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