js实现urldecode
URL解码的基本概念
URL解码是将URL编码的字符串转换回原始字符串的过程。URL编码通常将特殊字符转换为百分号(%)后跟两位十六进制数。例如,空格被编码为%20。

使用decodeURIComponent函数
JavaScript内置的decodeURIComponent函数可以直接解码URL编码的字符串:

const encodedStr = 'Hello%20World%21';
const decodedStr = decodeURIComponent(encodedStr);
console.log(decodedStr); // 输出: "Hello World!"
处理异常情况
如果字符串包含非法的URL编码序列(如%后跟非十六进制字符),decodeURIComponent会抛出错误。可以通过try-catch处理异常:
try {
const decodedStr = decodeURIComponent('Hello%20World%21%zz');
} catch (e) {
console.error('解码失败:', e.message);
}
自定义URL解码实现
如果需要更灵活的控制,可以手动实现解码逻辑:
function customUrldecode(str) {
return str.replace(/%([0-9A-F]{2})/gi, (match, hex) => {
return String.fromCharCode(parseInt(hex, 16));
});
}
const encodedStr = 'Hello%20World%21';
console.log(customUrldecode(encodedStr)); // 输出: "Hello World!"
注意事项
decodeURIComponent会解码所有有效的URL编码序列,包括/、?等保留字符。- 如果只需解码部分内容(如查询参数),需先拆分字符串再逐部分解码。
- 对于
+号,URL编码中它代表空格,但decodeURIComponent不会处理。需额外替换:const decodedStr = decodeURIComponent(str.replace(/\+/g, ' '));






