js unescape实现
JavaScript 中的 unescape 函数
unescape 是一个已弃用的 JavaScript 全局函数,用于解码由 escape 函数编码的字符串。它将十六进制编码的字符序列转换回原始字符。

基本用法
const encodedStr = 'Hello%20World%21';
const decodedStr = unescape(encodedStr);
console.log(decodedStr); // 输出: "Hello World!"
编码规则
unescape解码%xx形式的十六进制序列(xx为两位十六进制数),例如%20解码为空格。- 如果输入
%uXXXX(Unicode 编码),现代浏览器可能不支持,unescape会直接返回原字符串。
替代方案
由于 unescape 已弃用,推荐使用 decodeURI 或 decodeURIComponent:

const encodedStr = 'Hello%20World%21';
const decodedStr = decodeURIComponent(encodedStr);
console.log(decodedStr); // 输出: "Hello World!"
区别
-
unescape:- 仅解码
%xx形式的 ASCII 字符。 - 不处理 UTF-8 编码的 URI 特殊字符(如
%2F对应/)。
- 仅解码
-
decodeURIComponent:- 解码完整的 URI 组件(包括
%xx和特殊字符)。 - 是更安全的现代替代方案。
- 解码完整的 URI 组件(包括
注意事项
- 非标准函数,仅保留用于向后兼容。
- 在严格模式(
'use strict')下可能报错。 - 对于复杂编码场景(如 Unicode),建议使用
decodeURIComponent或TextDecoderAPI。
示例:手动实现 unescape
function customUnescape(str) {
return str.replace(/%([0-9A-F]{2})/gi, (match, hex) => {
return String.fromCharCode(parseInt(hex, 16));
});
}
console.log(customUnescape('Hello%20World%21')); // 输出: "Hello World!"






