decodeURIComponent和decodeURI有什么区别
时间: 2023-11-25 15:04:23 浏览: 204
`decodeURIComponent`和`decodeURI`是JavaScript内置函数,用于解码URL编码的字符串。它们的区别在于解码的范围。
1. `decodeURIComponent`:用于解码整个URL中除了字母、数字和以下特殊字符之外的所有字符,包括保留字符(如`/`、`?`、`#`等)和非ASCII字符。它会将编码的字符还原为它们原始的UTF-8表示。
示例:
```javascript
const encodedURI = 'Hello%20World%21';
const decodedURI = decodeURIComponent(encodedURI);
console.log(decodedURI); // 输出: Hello World!
```
2. `decodeURI`:用于解码整个URL中除了字母、数字和以下特殊字符之外的所有字符,但不会对非ASCII字符进行解码。它只会将保留字符(如`/`、`?`、`#`等)还原,而非ASCII字符仍然保持编码状态。
示例:
```javascript
const encodedURI = 'Hello%20%E6%9C%89%E6%84%8F%E6%80%9D';
const decodedURI = decodeURI(encodedURI);
console.log(decodedURI); // 输出: Hello%20%E6%9C%89%E6%84%8F%E6%80%9D
```
总结来说,如果您需要解码整个URL(包括非ASCII字符),应该使用`decodeURIComponent`函数。如果只需要解码URL中的保留字符,而非ASCII字符保持编码状态,可以使用`decodeURI`函数。
阅读全文