js 实现unescape
实现 unescape 功能的 JavaScript 方法
unescape 函数用于解码通过 escape 编码的字符串。在现代 JavaScript 中,虽然 unescape 已被废弃,但仍可以通过其他方式实现类似功能。
方法一:使用 decodeURIComponent 替代
decodeURIComponent 可以解码大部分由 escape 编码的字符,但处理非 ASCII 字符时可能有所不同。
function customUnescape(str) {
return decodeURIComponent(str.replace(/\+/g, ' '));
}
方法二:完全模拟 unescape 行为

这个实现更接近原生的 unescape 函数行为,能正确处理 %uXXXX 格式的 Unicode 编码:
function customUnescape(str) {
return str.replace(/%([0-9A-F]{2})/gi, function(match, p1) {
return String.fromCharCode(parseInt(p1, 16));
}).replace(/%u([0-9A-F]{4})/gi, function(match, p1) {
return String.fromCharCode(parseInt(p1, 16));
});
}
方法三:使用 TextDecoder API

现代浏览器支持 TextDecoder API,可以更可靠地处理各种编码:
function customUnescape(str) {
const encoded = new Uint8Array(str.split('').map(c => c.charCodeAt(0)));
return new TextDecoder().decode(encoded);
}
注意事项
- 原生的 unescape 函数不会解码加号 (+) 为空格,而 decodeURIComponent 会
- 对于 %uXXXX 格式的 Unicode 编码,decodeURIComponent 无法处理
- 在生产环境中建议使用 decodeURIComponent 或 TextDecoder,除非需要完全兼容旧代码
性能考虑
对于大量字符串解码,TextDecoder API 通常性能最好,其次是正则表达式替换方案,decodeURIComponent 居中。






