js如何实现解码
解码方法概述
在JavaScript中,解码通常涉及处理编码后的字符串,如URL编码、Base64编码或HTML实体编码等。以下是常见的解码方法。
URL解码
使用decodeURI()或decodeURIComponent()函数解码URL编码的字符串。decodeURI()用于解码完整的URL,而decodeURIComponent()用于解码URL的组成部分。

const encodedUrl = 'https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dvalue';
const decodedUrl = decodeURIComponent(encodedUrl);
console.log(decodedUrl); // 输出: https://example.com/path?query=value
Base64解码
使用atob()函数解码Base64编码的字符串。atob()将Base64字符串转换为原始二进制数据。
const encodedStr = 'SGVsbG8gV29ybGQh';
const decodedStr = atob(encodedStr);
console.log(decodedStr); // 输出: Hello World!
HTML实体解码
使用DOMParser或创建临时DOM元素解码HTML实体编码的字符串。

const encodedHtml = '<div>Hello&World</div>';
const parser = new DOMParser();
const decodedHtml = parser.parseFromString(encodedHtml, 'text/html').body.textContent;
console.log(decodedHtml); // 输出: <div>Hello&World</div>
Unicode解码
使用String.fromCharCode()或String.fromCodePoint()解码Unicode编码的字符串。
const unicodeStr = '\\u0048\\u0065\\u006C\\u006C\\u006F';
const decodedUnicode = unicodeStr.replace(/\\u[\dA-F]{4}/gi, match =>
String.fromCharCode(parseInt(match.replace(/\\u/g, ''), 16))
);
console.log(decodedUnicode); // 输出: Hello
自定义解码逻辑
对于自定义编码格式,可以编写特定的解码函数。例如,反转字符串或替换特定字符。
function customDecode(str) {
return str.split('').reverse().join('');
}
const encodedCustom = 'dlroW olleH';
const decodedCustom = customDecode(encodedCustom);
console.log(decodedCustom); // 输出: Hello World
注意事项
- URL解码时,确保使用正确的函数以避免解码错误。
- Base64解码可能不适用于非ASCII字符,需结合
TextDecoder处理二进制数据。 - HTML实体解码需注意XSS风险,避免直接插入未经验证的字符串到DOM中。






