javascript 中的 URL 解码

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情


本文着眼于 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() 方法最近已被弃用,取而代之的是,我们可以使用其他两种方法作为解决方案。

URL 编码与解码使用详解 1 介绍 1.1 背景 网页的 URL 只能包含合法的字符。合法字符分成两类。 URL 元字符:分号(;),逗号(,),斜杠(/),问号(?),冒号(:),at(@),&,等号(=),加号(+),美元符号($),井号(#) 语义字符:a-z,A-Z,0-9,连词号(-),下划线(_),点(.),感叹号(!),波浪线(~),星号(*),单引号('),圆括号(()) 除了以上字符,其他字符出现在 URL 之中都必须转义,规则是根据操作系统的默认编码,将每个字节转为百分号(%)加上两个大写的十六进制字 阅读详情

相关推荐

JavaScript实现UrlEncode标准(附完整源码)

JavaScript实现UrlEncode标准(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 988

JavaScript实现PHP的urldecode/urldecode函数

这个是 utf-8版本的 js实现 php的 urlencode() 和 urldecode()两个函数的功能。 在传送cookie的时候 在 php端实现 url编码 但要用 js解码cookie的时候 就出现汉字不能不能识别的问题 这个 js 很好的解决

JSURL字符串进行编码/解码分析,JavaScript技巧

URL编码和解码JavaScript中常用的操作之一,用于处理URL字符串中的特殊字符和非ASCII字符。JavaScript提供了和函数来执行URL编码和解码操作。通过编码和解码URL字符串,我们可以确保URL在传输和处理过程中的安全性和可靠性。在实际的Web开发中,URL编码和解码应用广泛,例如在URL参数传递和URL路径处理中。通过合理使用URL编码和解码技术,我们能够有效地处理URL字符串,确保数据的正确传递和处理。

TechNovaX的博客 396

JavaScript URLdecode函数

JavaScripturldecode有相应的函数,使用方便。但urldecode就需要一些处理,直接上代码 function UrlDecode(zipStr){ var uzipStr = ''; for (var i = 0; i < zipStr.length; i += 1) { var chr = zipStr.charAt(i); if (chr...

SHALLNY 1万+

js html url编码,js URLdecode()与urlencode方法支持中文解码

下面来介绍在js中来利用urlencode对中文编码与接受到数据后利用URLdecode()对编码进行解码,有需要学习的机友可参考参考。代码如下复制代码Function str2asc(strstr)str2asc = hex(asc(strstr))End FunctionFunction asc2str(ascasc)asc2str = chr(ascasc)End Functionfunct...

weixin_29658015的博客 8334

JS javascript实现url编码和url解码(urlEncode urlDecode)

本文转自:JS javascript实现url编码和url解码(urlEncode urlDecode) 转载请保留。     表单通过get方式提交中文数据时,提交的中文会被转化为类似“%CC%EC%BF%D5”的编码,比如使用百度搜索时,中文关键词就会被转换,如何把url编码恢复成原来的汉字呢?使用PHP中的Urldecode函数可以轻易实现这个功能,但...

aidang8943的博客 1万+

php js转码解码函数,javascript如何实现URL的转码与解码?

本篇文章给大家带来的内容是关于javascript如何实现URL的转码与解码?有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。1. escape 和 unescapeescape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。采用unicode字符集对指定的字符串除0-255以外进行编码。所有的空格符、标点符号、特殊字符以及更多有联系非ASCII字符都将...

weixin_35202718的博客 260

jsjavascripturl编码与解码

本文主要针对URI编解码的相关问题做了介绍,对Url编码中哪些字符需要编码、为什么需要编码做了详细的说明,并对比分析了Javascript 中和 编解码相关的几对函数escape / unescape,encodeURI / decodeURI和 encodeURIComponent / decodeURIComponent。 预备知识 foo://example.com:8042

PHP在线开发笔记 4248

jsurl进行编码解码的三种方式总结

@ & = + $ , #",也不进行编码。编码后,它输出符号的utf-8形式,并且在每个字节前加上%,,然后用十六进制的转义序列(形式为%xx)对生成的 1 字节、2 字节或 4 字节的字符进行编码。: @ & = + $ , #”,这些在encodeURI()中不被编码的符号,在encodeURIComponent()中统统会被编码。

我的博客,不一样的自我表达 3390

jsurl进行编码和解码

三种编码和解码函数: encodeURI和 decodeURI 它着眼于对整个URL进行编码,因此除了常见的符号以外,对其他一些在网址中有特殊含义的符号"; / ? : @ & = + $ , #",也不进行编码。编码后,它输出符号的utf-8形式,并且在每个字节前加上%。 需要注意的是,它不对单引号’编码。 encodeURIComponent和decodeURIComponent(推荐使用) 它用于对URL的组成部分进行个别编码,而不用于对整个URL进行编码。 因此,"; /

PrimaryColor 2万+

JSURL二次编码和解码

URL二次编码和解码问题URL编码解码原理 问题 今天遇到了一个奇怪的问题:在JS中用decodeURI()解析完一串URL编码后发现它依旧是URL编码,看的我一脸懵逼!最后发现参数里面竟然是一个URL二次编码!类似下面这种形式: "%25E6%2588%2591%25E7%2588%25B1%25E4%25BD%25A0" 也就是说也解码两次才能得到原码,如下: //编码结果:%25E6%2588%2591%25E7%2588%25B1%25E4%25BD%25A0 encodeURI(encodeURI

kswkly的博客 5579

js url解码gbk_JS中对URL进行转码与解码

1.escape 和 unescapeescape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。采用unicode字符集对指定的字符串除0-255以外进行编码。所有的空格符、标点符号、特殊字符以及更多有联系非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。escape不编码字符有6...

weixin_35775969的博客 411

js url解码gbk_javascript 和php 内置实现 url 的编码和解码

#1 javascript encodeURI 和 decodeURI:encodeURI函数可以把任意的字符作为URI进行编码,而decodeURI函数可以对经过encodeURI编码过的字符进行解码还原。浏览器端发起请求时包含有中文字符作为参数时,可能会使用到,并在服务器端做utf-8转gbk或者gb2312的转码处理,否则可能会出现乱码。#2 php urlencode和 urldeco...

weixin_39641876的博客 202

jsurl进行编码和解码(三种方式区别)以及获取url参数函数

一、jsurl进行编码和解码方法(三种方式区别) 只有 0-9[a-Z] $ - _ . + ! * ’ ( ) , 以及某些保留字,才能不经过编码直接用于 URL。 1、escape 和 unescape 原理:对除ASCII字母、数字、标点符号 @ * _ + - . / 以外的其他字符进行编码。 编码:`escape('http://www.baidu.com?name=zhang@xiao@jie&order=1')` 结果:`"http%3A//www.baidu.c

weixin_41656025的博客 2450

jsurl进行编码解码(多种方式对比)

编码优先级:优先使用(参数编码)和encodeURI(完整URL编码),拒绝使用escape;参数必编码:只要参数可能包含中文、空格、等字符,必须用编码,再拼接URL解码对应性encodeURI编码的内容用decodeURI解码,编码的内容用解码,不可交叉;后端配合:与后端约定统一编码格式(UTF-8),避免跨端解析乱码。URL编码解码前端开发的“基础但关键”技能,核心在于区分encodeURI和的适用场景——前者保结构,后者保参数。

1358

JavaScripturl编码解码

只有 0-9[a-Z] $ - _ . + ! * ’ ( ) , 以及某些保留字,才能不经过编码直接用于 URL。 **比如:**搜索的中文关键字,复制网址之后再粘贴就会发现该URL已经被转码。 1、escape 和 unescape 原理:对除ASCII字母、数字、标点符号 @ * _ + - . / 以外的其他字符进行编码。 编码:escape(‘http://www.baidu...

张鹏~IT~少年人的博客 2724

js url编码,解码

js url编码,解码 encodeURI(valuePrjName); Server.UrlDecode(Request["FN_SERIAL_NUM"]);

老陈代码记录 435

js url解码gbk_jsurl进行编码和解码

例如:搜索的中文关键字,复制网址之后再粘贴就会发现该URL已经被转码。1、escape 和 unescape原理:对除ASCII字母、数字、标点符号 @ * _ + - . / 以外的其他字符进行编码。编码:escape('http://www.baidu.com?name=zhang@xiao@jie&order=1')//结果:"http%3A//www.baidu.com...

weixin_39738273的博客 205

js url解码gbk_使用js解码gbk编码的字符串

如下字符串为 “产后恢复肚子”%B2%FA%BA%F3%BB%D6%B8%B4%B2%D9%CA%D3%C6%B5%BD%CC%B3%CC直接使用js解码函数解码得到的都是乱码,可以使用下面的函数进行解码/***js解码gbkurl编码的字符串*@param{[type]}strgbk编码字符串*@param{[type]}charset字符串的编码*...

weixin_30444517的博客 1395
上一篇: 修复 Python 错误TypeError: Missing 1 Required Positional Argument
下一篇: Python 比较两个 CSV 文件并打印差异
迹忆客
迹忆客 优质创作者: python技术领域 优质创作者: python技术领域
博客等级 码龄15年 4万+粉丝 404原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迹忆客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值