当前位置:首页 > JavaScript

js urldecode实现

2026-04-06 10:38:11JavaScript

JavaScript URL 解码实现

在 JavaScript 中,URL 解码可以通过内置的 decodeURIComponent() 函数实现。该函数用于解码由 encodeURIComponent() 编码的 URI 组件。

使用 decodeURIComponent()

decodeURIComponent() 函数解码 URI 组件的特殊字符,例如 %20 会被解码为空格。

js urldecode实现

const encodedUrl = "Hello%20World%21";
const decodedUrl = decodeURIComponent(encodedUrl);
console.log(decodedUrl); // 输出: "Hello World!"

处理异常情况

如果传入的字符串包含无效的编码序列(如 % 后没有跟随两个十六进制数字),decodeURIComponent() 会抛出 URIError 异常。可以使用 try-catch 处理异常。

try {
    const encodedUrl = "Hello%20World%%";
    const decodedUrl = decodeURIComponent(encodedUrl);
    console.log(decodedUrl);
} catch (e) {
    console.error("解码失败:", e.message);
}

替代方法:decodeURI()

decodeURI() 也可以解码 URL,但它不会解码 encodeURIComponent() 编码的所有字符(如 #&/ 等)。通常推荐使用 decodeURIComponent()

js urldecode实现

const encodedUrl = "https%3A%2F%2Fexample.com%2Fpath";
const decodedUrl = decodeURI(encodedUrl);
console.log(decodedUrl); // 输出: "https://example.com/path"

手动实现 URL 解码

如果需要手动实现 URL 解码逻辑,可以通过正则表达式替换和 unescape() 函数完成。

function customUrlDecode(encodedStr) {
    return encodedStr.replace(/%([0-9A-F]{2})/g, (match, p1) => {
        return String.fromCharCode(parseInt(p1, 16));
    });
}

const encodedUrl = "Hello%20World%21";
const decodedUrl = customUrlDecode(encodedUrl);
console.log(decodedUrl); // 输出: "Hello World!"

注意:unescape() 已废弃,不建议在生产环境中使用,此处仅作演示用途。

总结

  • 使用 decodeURIComponent() 解码完整的 URI 组件。
  • 使用 decodeURI() 解码完整的 URL(不处理组件)。
  • 手动实现时需注意编码规则和异常处理。

标签: jsurldecode
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数: fun…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…