详谈js对url进行编码和解码(三种方式的区别)

yizhihongxing

详谈js对URL进行编码和解码(三种方式的区别)

在JavaScript中,我们经常需要对URL进行编码和解码。比如在发送ajax请求时,如果URL中含有特殊字符,需要先对它进行编码后再发送请求;在处理查询字符串时,需要将编码后的字符串解码成可读的字符串。

JavaScript提供了三种方法来对URL进行编码和解码,包括encodeURI/decodeURIencodeURIComponent/decodeURIComponentescape/unescape。它们的使用场景和区别如下:

encodeURI/decodeURI

encodeURIdecodeURI分别用于对整个URL字符串进行编码和解码。它们对于URL中除了空格、字母、数字等字符以外的其他特殊字符不编码。

const url = 'http://example.com/path with spaces';
const encodedUrl = encodeURI(url);
console.log(encodedUrl); // 'http://example.com/path%20with%20spaces'

const decodedUrl = decodeURI(encodedUrl);
console.log(decodedUrl); // 'http://example.com/path with spaces'

在上面这个示例中,我们可以看到,encodeURI将URL中的空格编码成了%20,而decodeURI将其解码成了可读的空格。

encodeURIComponent/decodeURIComponent

encodeURIComponentdecodeURIComponent用于对URL中的参数部分进行编码和解码。它们对于URL中所有非字母、数字和- _ . ! ~ * ' ( )这些允许的字符也进行编码。

const url = 'http://example.com/path?foo=hello world';
const encodedUrl = url.replace('hello world', encodeURIComponent('hello world'));
console.log(encodedUrl); // 'http://example.com/path?foo=hello%20world'

const decodedUrl = decodeURIComponent(encodedUrl);
console.log(decodedUrl); // 'http://example.com/path?foo=hello world'

在上面这个示例中,我们使用encodeURIComponent将参数值hello world编码成了hello%20world,然后再将其拼接回URL中。最后使用decodeURIComponent将编码后的URL进行解码,得到原始的URL。

escape/unescape

escapeunescape用于将字符串进行编码和解码。它们类似于encodeURIComponentdecodeURIComponent,但是对于某些字符的编码方式可能不同。

const url = 'http://example.com/path?foo=hello world';
const encodedUrl = escape(url);
console.log(encodedUrl); // 'http%3A%2F%2Fexample.com%2Fpath%3Ffoo%3Dhello%20world'

const decodedUrl = unescape(encodedUrl);
console.log(decodedUrl); // 'http://example.com/path?foo=hello world'

在上面这个示例中,我们使用escape对URL进行编码,并使用unescape对其进行解码,最终得到原始的URL。

综上所述,三种URL编码解码的方法各有其适用的场景和特点。在实际开发中,需要根据不同的需求选择不同的方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详谈js对url进行编码和解码(三种方式的区别) - Python技术站

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

相关文章

  • JavaScript Navigator对象(浏览器相关对象)

    JavaScript的Navigator对象代表浏览器的导航信息,即浏览器相关的信息,它包含了一些有关浏览器和系统的信息,例如浏览器的名称、版本、语言、操作系统等。可以通过访问一些属性和方法来获取这些信息。下面,将详细讲解Navigator对象并提供代码示例。 1. 属性 (1)appName 描述:返回当前浏览器的名称(不考虑版本号) 代码: consol…

    Web开发基础 2023年3月30日
    00
  • JavaScript中Function详解

    JavaScript中Function详解 JavaScript中的函数是一种可重用代码块,它们可以带有参数并且可以返回值。在JavaScript中,函数是第一类对象,意味着它们可以像其他数据类型一样被赋值、传递和操作。 函数声明和调用 JavaScript中可以用 function 关键字定义一个函数。函数定义包括函数名、参数和函数体。下面是一个函数 ad…

    JavaScript 2023年5月27日
    00
  • JS使用Date对象实时显示当前系统时间简单示例

    下面我会详细讲解如何使用 JavaScript 的 Date 对象实现实时显示当前系统时间的简单示例。 准备工作 在开始之前,我们需要了解 JavaScript 的 Date 对象,该对象用于处理日期和时间,它提供了获取当前时间、设置时间、获取时间戳等方法。 为了演示该功能,我们需要在页面中添加一个用于显示时间的元素,例如: <div id=&quot…

    JavaScript 2023年5月27日
    00
  • 详解搭建一个vue-cli的移动端H5开发模板

    下面我将详细讲解如何搭建一个vue-cli的移动端H5开发模板。 准备工作 首先,需要安装node.js和npm。 然后,使用npm安装vue-cli:npm install -g vue-cli 创建项目 在命令行中执行以下命令创建一个基于webpack模板的vue项目: vue init webpack my-project cd my-project …

    JavaScript 2023年6月11日
    00
  • 基于JavaScript实现回到页面顶部动画代码

    实现回到页面顶部动画的代码需要使用JavaScript,下面是一份完整攻略: 1. HTML 结构 在页面中添加一个回到顶部的按钮,可以使用一个元素(如 div 或 a 标签)作为按钮,添加样式,如下所示: <div id="back-to-top">↑ 返回顶部</div> 2. CSS 样式 需要为按钮设置样式…

    JavaScript 2023年6月10日
    00
  • JavaScript实现页面实时显示当前时间的简单实例

    实现页面实时显示当前时间的简单实例,通常使用 JavaScript Date对象来获取当前时间,从而在页面上同步显示时间信息。 实现步骤如下: 1. 创建HTML文档结构 首先需要在HTML页面中添加一个用于展示时间的元素,例如使用p(段落)标签来展示当前时间: <p id="current-time"></p> …

    JavaScript 2023年5月27日
    00
  • js中匿名函数的创建与调用方法分析

    js中匿名函数的创建与调用方法分析 什么是匿名函数? 匿名函数,即没有名字的函数。通常用于定义一些只会在一处被使用的函数,或进行一些临时的任务。 在JavaScript中,我们可以通过以下2种方式定义匿名函数。 方法一:直接通过字面量方式定义 这种方式定义的匿名函数称为匿名函数表达式。例子如下: var sayHello = function() { con…

    JavaScript 2023年5月27日
    00
  • JS实现提示效果弹出及延迟隐藏的功能

    JS实现提示效果的弹出及延迟隐藏功能,可以通过以下步骤来完成: 步骤一:创建提示框HTML结构 首先,我们需要创建一个提示框的HTML结构,可以使用div标签模拟弹出框,也可以使用ul或者table标签,此处以使用div标签为例。 <div id="tip-box" style="display:none;"&g…

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