当前位置:首页 > JavaScript

js 实现unescape

2026-03-02 04:42:24JavaScript

unescape 方法的作用

unescape 方法用于解码通过 escape 编码的字符串,将十六进制序列转换回原始字符。该方法已被废弃,但在某些旧代码中可能仍会遇到。

原生 unescape 的实现

现代 JavaScript 中可以使用 decodeURIComponent 或 decodeURI 替代 unescape,但若需完全还原 unescape 的行为,可参考以下实现:

js 实现unescape

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

处理特殊字符的情况

unescape 不会解码加号(+)为空格,这与 decodeURIComponent 不同。若需要完全兼容旧版行为:

js 实现unescape

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

替代方案推荐

对于新项目建议使用标准 API:

  • decodeURIComponent 解码完整 URI 组件
  • decodeURI 解码完整 URI
// 示例用法
const encoded = 'Hello%20World%21';
console.log(decodeURIComponent(encoded)); // 输出 "Hello World!"

注意事项

unescape 已被从 ECMAScript 标准中移除,仅保留在浏览器中用于向后兼容。在 Node.js 环境中需要通过上述 polyfill 实现相同功能。

对于包含非ASCII字符的字符串,推荐使用 encodeURIComponent/decodeURIComponent 组合替代旧的 escape/unescape 方法。

标签: jsunescape
分享给朋友:

相关文章

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js节流实现

js节流实现

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

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…

js实现下拉刷新

js实现下拉刷新

监听触摸事件 通过监听 touchstart、touchmove 和 touchend 事件来检测用户下拉手势。记录触摸起始位置和移动距离。 let startY = 0; let currentY…

js 实现页面刷新

js 实现页面刷新

使用 location.reload() location.reload() 是原生 JavaScript 提供的页面刷新方法。调用该方法会重新加载当前页面,相当于点击浏览器的刷新按钮。 // 基本…

js 实现递归

js 实现递归

递归的基本概念 递归是指函数直接或间接调用自身的过程。在JavaScript中,递归通常用于解决可以分解为相似子问题的问题,如阶乘、斐波那契数列、树形结构遍历等。 递归的实现要点 基线条件(Base…