免费 URL 编码与解码工具 | OneStepToRank

URL 编码与解码

将特殊字符编码为安全的 URL 和查询字符串,或将百分号编码的字符串解码回可读文本。完全在浏览器中运行。

编码 / 解码 URL

Common URL-Encoded Characters

CharacterEncodedDescription
(space)%20Space character
!%21Exclamation mark
#%23Hash / fragment
$%24Dollar sign
&%26Ampersand
'%27Apostrophe
+%2BPlus sign
/%2FForward slash
=%3DEquals sign
?%3FQuestion mark
@%40At sign

主导 本地搜索

开发者工具只是起点。OneStepToRank 24/7 监控您在整个服务区域的 Google 排名,并自动调整策略,让您保持领先。

免费开始使用

什么是 URL 编码?

URL 编码,正式称为百分号编码,是将 URL 中不允许或具有特殊含义的字符转换为使用百分号加两个十六进制数字的安全表示的过程。该机制由 RFC 3986(统一资源标识符)定义,确保 URL 在互联网上正确传输。例如,空格字符编码为 %20,和号编码为 %26,问号编码为 %3F。如果没有 URL 编码,浏览器和服务器会将这些字符误解为 URL 结构组件而非字面数据。

RFC 3986 与保留字符

RFC 3986 定义了 URL 中两类字符。非保留字符——字母(A-Z,a-z)、数字(0-9)、连字符、下划线、句点和波浪号——可以在 URL 中直接出现而无需编码。保留字符: / ? # [ ] @ ! $ & ' ( ) * + , ; = 在 URI 语法中具有特殊的结构意义。当这些保留字符需要在 URL 组件(例如查询参数值)中作为字面数据出现时,必须进行百分号编码。编码过程将字符的 UTF-8 表示的每个字节转换为 %HH 形式,其中 HH 为该字节的十六进制值。多字节的 UTF-8 字符,如带音调的字母或表情符号,会产生多个百分号编码的三元组。

Web 开发中的 URL 编码

所有主流编程语言都提供了内置的 URL 编码函数。在 JavaScript 中,encodeURIComponent() 用于对字符串进行 URI 组件编码,而 encodeURI() 则在保留结构字符的同时对完整 URI 进行编码。Python 提供 urllib.parse.quote()urllib.parse.urlencode()。PHP 有 urlencode()rawurlencode()。了解何时以及如何使用 URL 编码对构建安全的 Web 应用至关重要——编码不当是常见的错误来源,且在未对用户输入进行消毒就直接放入 URL 时,可能导致注入漏洞。

常见问题

什么是 URL 编码?
URL 编码(百分号编码)将 URL 中不允许的字符转换为使用百分号(%)加两个十六进制数字的安全格式。例如,空格转换为 %20,和号转换为 %26。此机制由 RFC 3986 定义,确保 URL 在互联网上正确传输。
何时应该对字符串进行 URL 编码?
对任何将用作 URL 查询参数值的字符串进行编码,尤其是其中包含空格、和号、等号、问号或非 ASCII 字符时。常见场景包括构建 API 请求 URL、生成重定向 URL、在 GET 请求中传递表单数据,以及在其他 URL 中嵌入 URL。
encodeURI 与 encodeURIComponent 有何区别?
encodeURI() 保留在 URL 中具有特殊含义的字符,如冒号、斜杠、问号和和号。encodeURIComponent() 对除字母、数字、连字符、下划线、句点和波浪号之外的所有字符进行编码。对查询参数值使用 encodeURIComponent()。仅在对完整 URL 进行编码且需保留其结构时才使用 encodeURI()。本工具使用 encodeURIComponent()。
哪些字符在 URL 中无需编码即可安全使用?
根据 RFC 3986,永远不需要编码的非保留字符包括:A-Z、a-z、0-9、连字符 (-)、下划线 (_) 、句点 (.) 和波浪号 (~)。所有其他字符——包括空格、和号、等号、斜杠以及任何非 ASCII 字符——在用作查询参数值等 URL 组件时都应进行百分号编码。