js unescape 实现
实现 JavaScript 的 unescape 函数
unescape 函数用于解码由 escape 编码的字符串。它将十六进制转义序列(如 %20)转换回原始字符(如空格)。以下是几种实现方式:
使用内置 unescape 函数
JavaScript 本身提供了 unescape 函数,但已不推荐使用。可以直接调用:

const decodedString = unescape(encodedString);
自定义实现
如果不想使用已废弃的 unescape,可以通过正则表达式和 decodeURIComponent 实现类似功能:

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会抛出异常遇到非法序列,需做好错误处理。- 自定义实现需考虑性能,避免在长字符串上频繁使用正则替换。






