URL 编码完全指南
全面了解 URL 编码:它是什么、为什么重要、百分号编码的工作原理,以及在 URL 中处理特殊字符的最佳实践。
URL 编码与 Web 开发的技巧、指南和最佳实践。
全面了解 URL 编码:它是什么、为什么重要、百分号编码的工作原理,以及在 URL 中处理特殊字符的最佳实践。
深入对比 JavaScript 的 encodeURIComponent() 和 encodeURI() 函数,附带示例与最佳实践。
通过实用的解决方案,排查并修复 JavaScript 中常见的 "URIError: URI malformed" 错误。
全面介绍 URL 编码特殊字符的参考手册,涵盖空格、和号、Unicode 等内容。
掌握 REST API 开发中的 URL 编码技巧。学习如何正确编码查询参数和路径片段,构建可靠稳定的 API。
encodeURI 用于编码完整的 URL,会保留 /、? 和 # 等结构性字符。encodeURIComponent 用于编码单个 URI 组成部分,会对包括 /、? 和 & 在内的所有特殊字符进行编码。查询参数值应使用 encodeURIComponent,完整 URL 应使用 encodeURI。
URL 编码(百分号编码)依据 RFC 3986 将 URL 中的特殊字符转换为 %XX 格式。Base64 编码依据 RFC 4648 使用 64 个 ASCII 字符将二进制数据转换为文本字符串。二者用途不同,不能相互替代。
URL 编码字符的完整参考对照表。涵盖所有 ASCII 可打印字符(32-126)、常见 Unicode 字符,以及它们按照 RFC 3986 定义的百分号编码形式。
Python 的 URL 编码使用 urllib.parse.quote() 对字符串进行百分号编码,使用 urllib.parse.urlencode() 将字典编码为查询字符串。本指南通过实用示例讲解 quote()、unquote()、urlencode() 和 parse_qs()。
百分号编码是 RFC 3986 中定义的一种机制,用于对 URI 中的特殊字符进行编码:将它们替换为一个百分号(%)加上两位十六进制数字。它确保 URL 只包含可以在互联网上安全传输的合法 ASCII 字符。
%20 是 RFC 3986 定义的空格字符标准 percent-encoding 编码,应当用于 URL 路径以及大多数场景。而 + 号仅在 application/x-www-form-urlencoded 格式中表示空格,这种格式用于 HTML 表单提交和部分查询字符串。
JavaScript 提供了 decodeURIComponent() 用于解码单个 URI 组件,以及 decodeURI() 用于解码完整的 URI。使用 try-catch 来处理格式错误的 URI。URL 和 URLSearchParams API 为解析 URL 提供了更安全的替代方案。
根据 RFC 3986,REST API 的查询参数必须进行百分号编码,才能安全地包含 &、=、空格和 Unicode 等特殊字符。在 JavaScript 中使用 encodeURIComponent(),在 Python 中使用 urllib.parse.quote(),在 Java 中使用 URLEncoder.encode()。
HTML 实体编码将 <、>、& 和 " 等字符转换为 HTML 实体(<、>、&、"),以便在网页中安全显示。URL 编码则将字符转换为 %XX 格式,以便在 URL 中安全传输。它们防范的攻击类型不同,适用的场景也各不相同。
Node.js 中的 ERR_INVALID_URL 错误发生在 URL 构造函数或 url.parse() 接收到一个不合法的 URL 字符串时。常见原因包括缺少协议、未编码的特殊字符以及格式错误的 percent-encoding。解决方法是在解析前校验输入并对特殊字符进行编码。