js urldecode实现
URL解码的实现方法
在JavaScript中,URL解码可以通过内置的decodeURIComponent()函数实现。该函数用于解码由encodeURIComponent()编码的URI组件。
const encodedUrl = 'Hello%20World%21';
const decodedUrl = decodeURIComponent(encodedUrl);
console.log(decodedUrl); // 输出: Hello World!
手动实现URL解码
如果需要手动实现URL解码功能,可以通过以下方式完成:
function customUrlDecode(encodedString) {
return encodedString.replace(/%([0-9A-F]{2})/g, function(match, p1) {
return String.fromCharCode(parseInt(p1, 16));
});
}
const encodedStr = 'Hello%20World%21';
const decodedStr = customUrlDecode(encodedStr);
console.log(decodedStr); // 输出: Hello World!
注意事项
使用decodeURIComponent()时需要注意,如果字符串包含无效的编码序列(如%后跟非十六进制字符),会抛出URIError异常。可以通过try-catch处理异常:
try {
const decoded = decodeURIComponent('%zz');
} catch (e) {
console.error('无效的URI编码:', e.message);
}
编码与解码的对应关系
URL编码将特殊字符转换为%后跟两位十六进制数。例如:
- 空格编码为%20
- 感叹号编码为%21
- 中文字符会转换为UTF-8字节序列的百分号编码
解码过程就是将这些编码还原为原始字符。







