URL 中的特殊字符进行编码和解码
encodeURI()
和 decodeURI()
方法总结
1. encodeURI()
-
功能:
- 将 URI 中的非法字符进行编码,保留 URL 中的合法字符,例如字母、数字、下划线、连字符和句点。
- 不会编码以下字符:
; / ? : @ & = + $ , #
。
-
使用场景:
- 编码整个 URI,使其成为一个符合规范的 URL。
-
示例:
let uri = 'http://example.com/path with spaces/index.html?key=value#fragment'; let encodedURI = encodeURI(uri); // 输出: http://example.com/path%20with%20spaces/index.html?key=value#fragment
2. decodeURI()
-
功能:
- 解码使用
encodeURI()
编码过的 URI,将编码后的字符串转换回原始的 URI 字符串。
- 解码使用
-
使用场景:
- 解码整个 URI,将编码后的字符串还原为原始的 URL 格式。
-
示例:
let encodedURI = 'http://example.com/path%20with%20spaces/index.html?key=value#fragment'; let decodedURI = decodeURI(encodedURI); // 输出: http://example.com/path with spaces/index.html?key=value#fragment
3. 注意事项
- 适用范围:
encodeURI()
和decodeURI()
主要用于对整个 URL 进行编码和解码。如果需要对 URL 中的参数或某一部分进行编码,使用encodeURIComponent()
和decodeURIComponent()
更合适。 - 安全性:在处理用户输入的 URL 时,确保通过编码和解码避免非法字符引发的错误。
额外提示:
- 常见问题:编码错误可能会导致 URL 无法正确访问或解析,特别是在传输特殊字符时容易出错。
- 安全性注意:始终对用户提供的 URL 输入进行编码,确保其不会包含恶意字符,防止潜在的安全漏洞。
总结:
- 使用
encodeURI()
可以将含有特殊字符的 URL 转换为合法的格式,在整个 URL 传输和处理过程中保持有效性。 decodeURI()
则能将编码后的 URL 恢复,确保正确的解析和显示。