在线 URL 编码解码工具
对文本或完整网址进行百分号编码 / 解码,支持组件模式与完整 URL 模式切换。所有处理均在浏览器本地完成,数据不会上传到任何服务器。
觉得好用?探索更多内容
URL 编码解码工具使用说明
URL(统一资源定位符)中只允许出现一部分安全字符,中文、空格、&、=、# 等字符如果直接出现在网址或参数里,会破坏 URL 的解析结构,因此必须先转换成 %XX 形式的百分号编码。使用本工具的步骤:
- 第一步:选择编码模式——组件模式(encodeURIComponent)会把
/ ? : & = #等所有保留字符一并转义,适合编码单个参数值,是本工具的默认选项;完整 URL 模式(encodeURI)会保留这些结构字符,适合对整个网址做编码。 - 第二步:在输入框粘贴内容,点击「编码 Encode」或「解码 Decode」。解码时若遇到非法的百分号序列(例如孤立的
%),工具会用红色提示框报错,不会输出错误结果。 - 第三步:点击「复制结果」把输出复制到剪贴板,直接粘贴到代码或地址栏中使用。
例如在组件模式下,「ToolBox Pro 工具」会被编码为 ToolBox%20Pro%20%E5%B7%A5%E5%85%B7,其中 %20 是空格、%E5%B7%A5%E5%85%B7 是「工具」的 UTF-8 字节。所有转换都在你的浏览器本地完成,输入的链接和参数不会离开你的设备,处理带 token 的回调地址也不必担心泄露。
常见问题(FAQ)
encodeURIComponent 和 encodeURI 有什么区别?
/ ? : & = # 等所有 URL 保留字符一并转义,适合编码参数值;encodeURI 是完整 URL 模式,保留这些结构字符不转义,适合编码整个网址。要编码的若只是参数值,应选组件模式,否则参数里的 &、= 会和 URL 本身的分隔符混淆。空格为什么有时变成 + 有时变成 %20?
%20 是 URL 百分号编码的官方写法,JavaScript 的 encodeURIComponent 和 encodeURI 都把空格转成 %20;而 + 表示空格是 HTML 表单 application/x-www-form-urlencoded 的历史约定,PHP 的 $_GET、Java 的老版本等都在用。两种写法在解码表单数据时应等价处理,其余场景推荐使用 %20。为什么解码后出现乱码或抛出异常?
%(后面没有两位十六进制数字)会直接抛出 URIError,本工具会捕获并提示;乱码则通常是原文不是 UTF-8 编码(如 GBK),或对同一个字符串重复编码了多次(出现 %2520 这类序列)。请确认输入是标准的、一次编码的百分号字符串。什么时候需要对 URL 编码?
&、=、#、? 等字符时必须编码,否则会破坏 URL 的结构。例如搜索词、回调地址(redirect_uri)、Base64 数据作为参数传递前都应先编码,接收方再用对应函数解码还原。我的数据会被上传到服务器吗?
相关知识:百分号编码的规则与陷阱
百分号编码(Percent-encoding)由 RFC 3986 定义:把不属于 URL 安全字符集的字节,写成 % 加两位十六进制数的形式。对非 ASCII 字符(如中文),先把字符按 UTF-8 编码成若干字节,再逐字节转义——所以「工」变成 %E5%B7%A5 正好对应它 UTF-8 的三个字节 E5、B7、A5。这也解释了为什么同一个中文字符串在不同编码(UTF-8 与 GBK)下转义结果不同:网页环境下默认都是 UTF-8。
常见的陷阱有三个:一是漏编码,直接手工拼接 URL,参数里的 & 被当成参数分隔符,导致服务端拿到截断的值;二是重复编码,编码一次后再编码一次,%20 会变成 %2520,解码后出现多余的 %20 字面量;三是模式用错,把整个网址丢给 encodeURIComponent,结果 :// 也被转义,网址变得无法直接访问。正确做法是:整条 URL 用 encodeURI,参数值逐个用 encodeURIComponent。
如果你在处理接口数据,经常还需要同时查看 JSON 报文或转换 Base64,欢迎使用本站的 JSON 格式化 与 Base64 编解码 工具;解析时间戳参数时 时间戳转换 也很实用。