当前位置:首页 > JavaScript

js 实现unescape

2026-03-02 04:42:24JavaScript

unescape 方法的作用

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

原生 unescape 的实现

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

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

处理特殊字符的情况

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

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 方法。

js 实现unescape

标签: jsunescape
分享给朋友:

相关文章

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与响应式…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1;…

js实现vue路由

js实现vue路由

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