当前位置:首页 > JavaScript

js unescape 实现

2026-04-07 02:17:35JavaScript

实现 JavaScript 的 unescape 函数

unescape 函数用于解码由 escape 编码的字符串。它将十六进制转义序列(如 %20)转换回原始字符(如空格)。以下是几种实现方式:

使用内置 unescape 函数

JavaScript 本身提供了 unescape 函数,但已不推荐使用。可以直接调用:

js unescape 实现

const decodedString = unescape(encodedString);

自定义实现

如果不想使用已废弃的 unescape,可以通过正则表达式和 decodeURIComponent 实现类似功能:

js unescape 实现

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

使用 decodeURIComponent

decodeURIComponent 是更现代的替代方案,但需注意它无法处理 + 转空格的情况:

function safeUnescape(str) {
    return decodeURIComponent(str.replace(/\+/g, ' '));
}

处理 Unicode 字符

如果需要支持 Unicode 转义序列(如 %uXXXX),可以扩展自定义函数:

function unicodeUnescape(str) {
    return str.replace(/%u([0-9A-F]{4})|%([0-9A-F]{2})/g, (match, p1, p2) => {
        return String.fromCharCode(p1 ? parseInt(p1, 16) : parseInt(p2, 16));
    });
}

注意事项

  • 内置 unescape 已废弃,建议使用 decodeURIComponent 或自定义实现。
  • decodeURIComponent 会抛出异常遇到非法序列,需做好错误处理。
  • 自定义实现需考虑性能,避免在长字符串上频繁使用正则替换。

标签: jsunescape
分享给朋友:

相关文章

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 c…