javascript 中的 URL 解码

news/2024/11/7 14:41:16/

文章目录

    • 需要URL编解码
    • JavaScript 中的 URL 解码
      • 使用 unescaped() 方法解码编码的 URL
      • 使用 decodeURI() 方法解码编码的 URL
      • 使用 decodeURIComponent() 方法解码编码的 URL
    • 总结


本文着眼于 URL 解码以及如何使用 JavaScript 对编码的 URL 进行解码。


需要URL编解码

URL 应具有某些字符。 URL 可以包含 US-ASCII 字符,例如从 0 到 9 的数字和 a-z 中的字符,以及一些特殊字符。

但是,某些 URL 可以包含 US-ASCII 中没有的字符或特殊字符。 那就是我们需要URL编码的时候。

URL 编码使我们能够拥有正确格式的 URL,换句话说,可接受的形式,即使它具有 US-ASCII 表之外的特殊字符。

请参考以下示例。

http://example.us/url encoding

在上面的 URL 中,URL 和编码之间存在间隙/空格,这对于 URL 格式来说是不可接受的。 在对 URL 进行编码时,空隙会被一些特殊字符所取代,URL 就会变成正确的格式。

我们可以使用 URL 解码来解码编码的 URL。 这个过程是 URL 编码的逆过程。

当我们解码 URL 时,我们可以以更易读的方式获得 URL。


JavaScript 中的 URL 解码

在 JavaScript 中,可以通过三种方法对编码的 URL 进行解码。

  1. unescape() 方法
  2. decodeURI() 方法
  3. decodeURIComponent() 方法

使用 unescaped() 方法解码编码的 URL

此方法在 JavaScript 中已弃用,这意味着该函数未在 JavaScript 中使用。 我们可以使用其他两个选项来解码编码的 URL,而不是使用此函数。

使用 decodeURI() 方法解码编码的 URL

在 JavaScript 中,我们有 encodeURI() 方法来编码 URL 和 decodeURI() 来解码编码的 URL。 encodeURI() 方法对 URL 地址进行编码,不包含地址的域相关部分(HTTPS、域名等)。

decodeURI()encodeURI() 的逆向方法,对编码后的带有正则字符的URL进行解码。 下面是 decodeURI()encodeURI() 方法的语法。

语法:

// Syntax for encoding
encodeURI(content to encode)// Syntax for decoding
decodeURI(content to decode)

要查看解码过程,我们需要有一个编码的 URL。 让我们来看一个示例 URL。

http://example.us /url encoding

作为第一步,我们应该将 URL 作为下面的字符串分配给变量。

let exURL = " http://example.us /url encoding";

然后我们使用 encodeURI() 方法对其进行编码,并使用 console.log() 方法进行打印。

let encodedURL = encodeURI(exURL);
console.log(encodedURL);

在上面的语句中,我们将 encodeURI() 方法分配给了一个名为 encodedURL 的变量。 换句话说,我们可以直接使用 console.log() 函数中的 encodeURI() 函数,如下所示。

console.log(encodeURI(exURL));

两种方式都给我们相同的结果,所以让我们继续第一个路径。 现在我们完整的 JavaScript 代码应该是这样的。

完整代码:

let exURL = "http://example.us /url encoding";
let encodedURL = encodeURI(exURL);
console.log(encodedURL);

输出:

使用 encodeURI() 方法

现在让我们使用 decodeURI() 方法对其进行解码。 首先,我们可以将 decodeURI() 过程分配给另一个变量,如下所示。

let decodedURL = decodeURI(encodedURL);
console.log(decodedURL);

输出:

使用 decodeURI() 方法

如您所见,我们将从上述过程中获取解码后的 URL。

使用 decodeURIComponent() 方法解码编码的 URL

decodeURIComponent() 方法是 encodeURIComponent() 方法的反向方法。 encodeURIComponent() 方法使用其中与域相关的部分对 URL 地址进行编码。

此外,它还对一组特殊字符进行编码,而 encodeURI() 方法不会这样做。 这是唯一字符列表。

使用 decodeURIComponent() 方法解码编码的 URL

decodeURIComponent() 方法使用相关字符和符号对编码的 URL 进行解码。

句法:

// Syntax for encoding
encodeURIComponent(content to encode)// Syntax for decoding
decodeURIComponent(content to decode)

让我们举一个例子 URL。

https://stackoverflow.com/url+encoded string+in javascript

在上面的示例中,URL 中有空格、/、: 和 + 标记。 让我们使用 encodeURIComponent() 方法对 URL 进行编码。

let exURL = "https://stackoverflow.com/url+encoded string+in javascript";
let encoded = encodeURIComponent(exURL);
console.log(encoded);

输出:

使用 encodeURICompoenent() 方法

现在让我们尝试使用 decodeURIComponent() 方法对其进行解码,如下所示。

let decoded = decodeURIComponent(encoded);
console.log(decoded);

如上所述,我们已将 decodeURIComponent() 方法分配给一个变量。 使用 console.log() 方法打印它。

输出:

使用 decodeURIComponent() 方法

如您所见,我们编码的 URL 已作为解码 URL 给出。

完整代码:

let exURL = "https://stackoverflow.com/url+encoded string+in javascript";let encoded = encodeURIComponent(exURL);
console.log(encoded);let decoded = decodeURIComponent(encoded);
console.log(decoded);

总结

这篇文章简单介绍了 JavaScript,并讲授了 URL 编码和解码是什么。 然后我们主要讨论了两个方法:decodeURI()decodeURIComponent() ,并给出了一些例子。

两种方法都以两种方式工作,根据需要使用合适的方法。 unescape() 方法最近已被弃用,取而代之的是,我们可以使用其他两种方法作为解决方案。


http://www.ppmy.cn/news/242907.html

相关文章

Linux工具之htop(含移植到arm-linux系统)

文章目录 介绍安装使用一些参数讲解功能键说明一些快捷键一些指令参数 拓展:Linux进程PRI与NI值拓展:VIRT(虚拟内存)RES(常驻内存)和SHR(共享内存)拓展:编译成应用放到开发板上使用源码下载解压编译 介绍 Htop是一个免费的(GPL&a…

来了解一下白盒测试,黑盒测试,灰盒测试吧(超详解~)

根据被测对象的不同,软件测试可以分为白盒测试、黑盒测试、灰盒测试三种方式。那么,这三种测试方式具体是如何运行的?各有什么特点?下面,跟着静姐一起了解一下吧! 01、白盒测试 WHITE BOX ●概念&#x…

【Django知识点】【Django Rest Framework学习】fbv开发、cbv开发、...

前言 本文内容主要讲解介绍Django Rest Framework框架,结合如下django项目学习食用 Github仓库地址 基本概念 FBV:function based views 特点 无需继承类 基于函数形式的视图开发 fbv默认为get方法,如果提供post或其他类型方法&#x…

【动态规划】最长回文子序列(java)

最长回文子序列 leetcode516. 最长回文子序列题目描述 暴力递归解题思路代码演示 递归 缓存解题思路代码演示 动态规划解题思路代码演示 动态规划专题 leetcode516. 最长回文子序列 来源:力扣(LeetCode) 链接:https://leetcode.c…

智能语音电话机器人怎么选?从这三方面下手

电销机器人市场鱼龙混杂,哪个电话机器人品牌好? 小编觉得可以从三个方面下手: 第一、核心技术 使用传统电销时需要考虑这些数据:接通率、通话时长、投诉、客户满意度等,因为它们直接影响着电销人员的业务素质&#…

你了解过“本次通话将被录音,请您谅解“背后的智能语音质检?

“为了保证通话服务质量,本次通话将被录音,请您谅解", 这句话是不是很耳熟,这里的电话录音就是为了方便公司监察、纪检、管理等部门能随机抽取电话录音对公司的客服或销售人员在与客户通话的过程服务态度作出评价: 比如是否按照规定话术…

手机录音 怎么单声道_手机通话小不是手机问题,打开这个开关,音量提高好几倍...

平时在打电话的时候,你是否有这样的困扰?明明都把手机通话音量调整到最大了,但声音却还是感觉很小的样子。在一些公共场合下,没有携带耳机,又不能将手机开通免提,这种情况实在是很磨人! 其实我们…

电话机器人源码可以低成本高效率为OEM代理前景保驾护航

深圳电销机器人OEM代理前景怎么样?随着人工智能的发展,越来越多的企业开始选择采用智能语音机器人,来减轻人工的压力,更好的服务客户,提高效率。 而随着人工智能的发展,越来越多的企业开始选择采用智能语音…