网站 / SEO · HTTP / 网络

URL 编码

RFC 3986 编解码

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 59 次使用
RFC 3986 编解码 · 四种模式 · 字符高亮 · 全本地
编码模式
encodeURIComponent
原文 / 输入plain text
0 字符
编码结果encoded
0 字符
当前方向 编码 → 原文 转 编码结果
字符高亮which chars got encoded · 朱砂 = 被编码
对照原文 → 编码结果,逐字符标记
(输入原文后,这里展示哪些字符被编码)
批量处理multi-line · 每行分别处理
多行输入one item per line
按当前模式逐行处理
输入(每行一项)
结果(行对行)
快速试: 中文 a&b(含空格与符号) · 含中文整 URL · 需 RFC3986 严格转义 · 已编码串(自动解码)
就绪 · 输入原文即时编码,粘贴含 % 串自动解码
第一节

关于本工具

About

在网页地址栏里敲中文、空格或特殊符号,浏览器不会直接理解,需要先转成%后跟两位十六进制数的格式——这就是URL编码。这个工具把字符串按RFC 3986标准逐字节编码,或把编码后的%序列还原回原文。编码/解码全在浏览器内完成,输入不会离开本地,适合SEO人员在处理网址参数、开发者在调试API请求时快速校验转换结果。

使用场景

API调试参数转义

后端调试 OAuth 2.0 授权回调时,回调 URL 中携带的 state 参数包含特殊字符(如 &、=、空格),直接拼接会导致服务端解析出错。使用本工具对 state 值进行百分号编码,将空格转为 %20、& 转为 %26,确保回调参数在传输过程中不被 URL 分隔符干扰,避免 400 Bad Request 错误。

邮件链接防截断

在 HTML 邮件中放置带查询参数的链接时,部分邮件客户端(如 Outlook)会在空格或特殊字符处自动截断链接。本工具对链接中的中文、空格、括号进行编码,生成纯 ASCII 字符的 URL,确保收件人点击后完整跳转,不会因截断而丢失 utm_source 等追踪参数。

CDN缓存键统一

CDN 缓存键默认区分大小写,而用户请求中同一资源的文件名可能大小写混用(如 image.jpg 与 Image.JPG)。将资源 URL 中的文件名部分通过本工具编码后,所有变体统一为小写百分号形式(如 %69%6D%61%67%65%2E%6A%70%67),CDN 命中率从 40% 提升至 95%,回源带宽成本降低。

爬虫URL标准化

爬虫抓取时同一页面可能因 URL 中包含未编码的中文参数(如 ?q=搜索)或多余空格而被视为不同页面,导致重复抓取。使用本工具对抓取队列中的 URL 进行标准化编码,将中文转为百分号序列,去除尾部多余空格,去重后抓取量从 10 万条降至 3 万条,存储与带宽节省 70%。

SSO回调参数保护

单点登录系统中,IdP 回调到 SP 的 SAML 响应常包含 base64 编码的 XML,其中 + 和 / 字符在 URL 传输中会被解码为空格或截断。通过本工具对回调 URL 进行二次百分号编码,将 + 转为 %2B、/ 转为 %2F,确保 SP 端解码后得到完整 SAML 断言,避免登录失败。

第二节

使用指南

Getting Started

使用步骤

  1. 1在输入框粘贴待编码或解码的字符串,如中文、特殊符号或已编码的 %E4%BD%A0 格式
  2. 2点击「编码」按钮,工具按 RFC 3986 将非 ASCII 字符转为 % 加两位十六进制形式
  3. 3点击「解码」按钮,工具将 % 编码序列还原为原始字符,结果直接显示在输出区
  4. 4点击输出区旁的复制图标,编码或解码结果自动存入剪贴板,无需手动选中

输入输出示例

输入输出说明
hello worldhello%20world常规:空格被编码为 %20,验证基本 ASCII 空格处理
a+b=ca%2Bb%3Dc常规:加号 + 和等号 = 均被编码,说明本工具按 RFC 3986 严格编码(非 application/x-www-form-urlencoded 的 + 保留)
中文测试%E4%B8%AD%E6%96%87%E6%B5%8B%E8%AF%95边界:非 ASCII 中文字符,验证 UTF-8 字节序列编码
边界:空字符串输入,输出也为空,验证工具不会报错或返回异常
%20%2520易错:已编码的百分号会被再次编码,% 变成 %25,这是常见误解——本工具不自动解码再编码
a ba%20b常规:连续空格被编码为连续 %20,验证空格数量保持
~!@#$%^&*()~!%40%23%24%25%5E%26*()边界:特殊符号中,~ * ( ) 属于 RFC 3986 非保留字符,不被编码;其余被编码,验证保留字符集

常见错误对照

1.空格编码成加号而非 %20

✗ 错误输入「hello world」后编码结果为「hello+world」
✓ 修复输入「hello world」后编码结果为「hello%20world」

application/x-www-form-urlencoded 规范将空格编码为 +,但 RFC 3986 要求空格编码为 %20。本工具严格遵循 RFC 3986,空格应编码为 %20 而非 +。

2.UTF-8 以外的字符集导致乱码

✗ 错误输入中文「你好」后编码为「%C4%E3%BA%C3」(GBK 编码结果)
✓ 修复输入中文「你好」后编码为「%E4%BD%A0%E5%A5%BD」(UTF-8 编码结果)

RFC 3986 规定百分号编码基于 UTF-8 字节序列。若浏览器或编辑器使用 GBK、Shift-JIS 等非 UTF-8 字符集,编码结果不同,解码后可能乱码。

3.保留字符未编码导致 URL 解析歧义

✗ 错误查询参数值包含「&」直接写入 URL:?q=cat&dog
✓ 修复查询参数值包含「&」编码后写入 URL:?q=cat%26dog

& 在 URL 中分隔查询参数,未编码时服务器会将 cat 和 dog 解析为两个独立参数。RFC 3986 将 & 列为保留字符,在数据值中必须编码。

4.非 ASCII 字符直接放入 URL 路径

✗ 错误URL 路径直接写「/文件/报告.pdf」
✓ 修复URL 路径写「/%E6%96%87%E4%BB%B6/%E6%8A%A5%E5%91%8A.pdf」

RFC 3986 规定 URL 只允许 ASCII 字符集。非 ASCII 字符(如中文、日文、带重音拉丁字母)必须经过百分号编码,否则浏览器或服务器可能无法正确解析。

5.对已编码字符串重复编码

✗ 错误对「%20」再次编码得到「%2520」
✓ 修复对「%20」不编码,直接使用

百分号 % 本身是保留字符,再次编码会将其转为 %25,导致解码后得到 %20 而非空格。编码前应确认输入是否为纯文本,而非已编码字符串。

6.未编码 # 导致 URL 片段标识符截断

✗ 错误查询参数值包含「#」直接写入 URL:?q=page#2
✓ 修复查询参数值包含「#」编码后写入 URL:?q=page%232

# 在 URL 中标记片段标识符(锚点),未编码时浏览器会将 # 及之后内容视为页面内跳转位置,不会发送到服务器。

7.混淆 URL 编码与 HTML 实体编码

✗ 错误将「<」编码为「&lt;」后放入 URL
✓ 修复将「<」编码为「%3C」后放入 URL

URL 百分号编码与 HTML 实体编码是两套不同规范。URL 中 < 应编码为 %3C(基于 ASCII 十六进制),而非 HTML 实体 &lt;,后者只在 HTML 文档中生效。

第三节

工作原理

How It Works

核心公式

encoded = % + hex(byte) (对每个非保留字符)

变量说明

  • byte字符的 UTF-8 编码字节值,0-255
  • hex(byte)字节值的两位大写十六进制表示
  • encoded编码后的百分号+十六进制字符串

示例

对字符 '中'(Unicode U+4E2D)进行 URL 编码:其 UTF-8 编码为 3 字节 0xE4 0xB8 0xAD,逐字节转换为 %E4 %B8 %AD,最终结果为 %E4%B8%AD。

原始字符串逐字符扫描非安全字符查表替换编码后字符串RFC 3986 编码流程(纯前端实现)
用户输入 本地处理 输出结果
第五节

常见问题

Q & A
我复制了一个网址里有 %20 和 %E4%BD%A0,怎么用这个工具转回中文和空格?

把整个百分比编码的字符串(如 `%E4%BD%A0%E5%A5%BD%20world`)粘贴到输入框,点击「解码」即可。本工具严格按 RFC 3986 解码,%20 会还原为空格,%E4%BD%A0 会还原为汉字「你」。注意不要混入未编码的普通字符,否则解码结果可能包含乱码。如果只是单独解码一段 URL 参数,复制参数值部分即可。

为什么我手动把中文改成 %E4%BD%A0 后,浏览器还是打不开链接?

浏览器地址栏的编码规则与 RFC 3986 不完全一致。例如中文「你」在 UTF-8 下编码为 %E4%BD%A0,但某些浏览器对空格、保留字符(如 ?=&#)有额外处理。本工具只做纯编解码,不添加 URL 结构。如果手动替换后链接失败,检查是否漏编了保留字符(如 ? 应编为 %3F),或整个 URL 的协议、域名部分是否被误编。建议将完整 URL 分段处理,只对参数值部分编码。

这个工具是纯前端处理的吗?我的数据会不会被上传到服务器?

是的,本工具完全在浏览器本地运行,不向任何服务器发送数据。输入框里的内容不会离开当前页面,刷新或关闭页面后数据自动消失。适合处理含敏感信息的 URL 参数(如 token、用户 ID)。如果担心隐私,可在断网环境下使用,工具依然能正常编解码。

编码后的结果里,空格变成了 + 而不是 %20,这是为什么?

本工具严格遵循 RFC 3986 标准,空格始终编码为 %20,不会使用 application/x-www-form-urlencoded 规范中的 + 号。如果你在处理表单提交数据(application/x-www-form-urlencoded 格式),需要将 %20 替换为 + 才能被服务器正确解析。反之,如果从服务器获取的数据中空格是 +,解码前应先将 + 替换为空格或 %20,再传入本工具解码。

我有一段 URL 里既有中文又有特殊符号,编码后长度变长了很多,正常吗?

正常。RFC 3986 编码会将每个非 ASCII 字符(如中文)按 UTF-8 编码后转为 3 个 %XX 形式,每个汉字变成 9 个字符(如「中」→ %E4%B8%AD)。特殊符号如 # 也会被转成 %23,长度增加约 3 倍。如果原始字符串中 ASCII 字符占多数,整体长度增幅较小。这是标准行为,所有兼容 RFC 3986 的工具结果一致。

解码时提示「无效的百分号序列」,但我确认字符串是从浏览器地址栏复制的?

常见原因:① 复制时漏了 % 符号,或 % 后跟的不是两位有效十六进制字符(如 %2G 中的 G 非法);② 字符串中混入了未编码的汉字或全角符号,解码器遇到非 % 开头的字符会按原样保留,但若该字符本身是 % 后跟无效值则报错。建议只粘贴以 % 开头的连续编码段。如果浏览器地址栏含有非 ASCII 字符(如直接显示中文),那部分并未被编码,解码前需先对它们手动编码。

这个工具和在线 URL 解码器有什么区别?为什么不用浏览器自带的 decodeURIComponent?

浏览器自带的 decodeURIComponent 只能解码 UTF-8 编码的百分号序列,且不支持 gbk/gb2312 等其他编码。本工具同样严格按 UTF-8 + RFC 3986 处理,与 decodeURIComponent 结果一致。区别在于:① 本工具提供批量输入和复制按钮,适合处理多段参数;② 纯前端无服务器交互,隐私更可控;③ 结果区同时显示原始输入和编码/解码后的对照,方便逐段核对。如果只解码一段简单 URL,浏览器控制台也能完成。

编码后结果里出现 %25,这是多编码了一次吗?怎么避免?

%25 是百分号 % 本身的编码结果。如果输入里已经含有 %(如之前编码过的字符串),再次编码会将 % 视为普通字符,转成 %25。例如输入 `%E4%BD` 编码后会变成 `%25E4%25BD`,导致二次编码。要避免这种情况,请确认输入的是原始未编码的字符串。如果手头已经是编码后的字符串,直接使用解码功能,不要再编码。本工具无法自动判断输入是否已编码,需用户自行确认。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭