举例说明什么是decodeURI()和encodeURI()是什么?
encodeURI()
和 decodeURI()
是 JavaScript 中用于编码和解码 URI 的函数。它们主要用于处理包含特殊字符的 URI,确保 URI 的有效性和安全性。
encodeURI()
encodeURI()
函数用于将 URI 编码为有效的 URI 字符串。它会将 URI 中的特殊字符(例如空格、中文、标点符号等)转换为 UTF-8 编码的十六进制转义序列(例如 %20
表示空格)。
重要: encodeURI()
不会 编码以下字符:A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #
这些字符在 URI 中具有特殊含义,但通常不需要编码。
示例:
假设有一个包含中文和空格的 URI:
const uri = "https://example.com/搜索 结果.html";
使用 encodeURI()
编码后:
const encodedURI = encodeURI(uri);
console.log(encodedURI); // 输出: https://example.com/%E6%90%9C%E7%B4%A2%20%E7%BB%93%E6%9E%9C.html
decodeURI()
decodeURI()
函数用于将编码后的 URI 解码回原始的 URI 字符串。它会将 encodeURI()
生成的十六进制转义序列转换回对应的字符。
示例:
使用上面编码后的 URI:
const decodedURI = decodeURI(encodedURI);
console.log(decodedURI); // 输出: https://example.com/搜索 结果.html
encodeURIComponent() 和 decodeURIComponent()
与 encodeURI()
和 decodeURI()
类似,JavaScript 还提供了 encodeURIComponent()
和 decodeURIComponent()
函数。它们的区别在于 encodeURIComponent()
会编码更多的字符,包括上面提到的那些 encodeURI()
不会编码的字符,例如 /
、?
、&
等。
通常情况下,encodeURIComponent()
用于编码 URI 的各个组成部分(例如查询参数的值),而 encodeURI()
用于编码整个 URI。
总结:
函数 | 作用 | 编码范围 |
---|---|---|
encodeURI() |
编码 URI | 编码大部分特殊字符,但不编码保留字符 |
decodeURI() |
解码 URI | 解码 encodeURI() 编码的 URI |
encodeURIComponent() |
编码 URI 组件 | 编码几乎所有特殊字符,包括保留字符 |
decodeURIComponent() |
解码 URI 组件 | 解码 encodeURIComponent() 编码的 URI 组件 |
希望以上解释和示例能够帮助你理解 encodeURI()
和 decodeURI()
的用法。