URL 安全字符互相转换
这个工具把文本按浏览器内置的 encodeURIComponent 规则编码成百分号形式(例如空格变成 %20,汉字变成 %E4%BD%A0 这样的 UTF-8 字节序列),也可以用 decodeURIComponent 把它还原。它适合处理查询参数的值、路径片段或者一段从日志里复制出来的乱码链接。需要注意它只提供这一种编码规则:没有「保留 URL 结构的整体编码」(即 encodeURI)选项,也没有表单风格的「空格转加号」选项,也不会自动识别输入是否已经编码过。
对默认的示例 https://example.com/搜索?q=你好 世界 点击「编码 →」,实际得到:https%3A%2F%2Fexample.com%2F%E6%90%9C%E7%B4%A2%3Fq%3D%E4%BD%A0%E5%A5%BD%20%E4%B8%96%E7%95%8C。可以看到冒号、斜杠、问号和等号也被转义了,这说明这里更适合编码「某一个参数的值」,而不是整条链接。再比如把 a b&c=d/é 编码,得到 a%20b%26c%3Dd%2F%C3%A9,其中 & 变成 %26,避免它被当成参数分隔符。反过来,把 %E4%BD%A0%E5%A5%BD 点击「解码 →」得到「你好」。以上输出都是用同样的函数实际运行得到的。
因为 encodeURIComponent 会把 :// 和 ? 等结构字符也转义。它的设计用途是编码放在链接某个位置里的一小段数据,例如 ?q= 后面的搜索词。正确的做法是保留链接结构,只对参数值单独编码后再拼进去。
先检查这一行是否完整:从邮件、聊天软件或者日志里复制时,末尾可能被截断,或者夹带了空格、换行。另外确认原文是不是 UTF-8 编码,GBK 等其他字符集的序列无法在这里还原。如果这一行本来就是普通文本,里面恰好有单独的百分号(例如「完成 50%」),也会触发失败,这类文本不需要解码。
在 URL 的查询部分,不同系统约定不同:传统表单提交把空格写成加号,而 JavaScript 的 encodeURIComponent 和大多数现代 API 使用 %20。本工具只产生和识别 %20 形式。如果你拿到的字符串里空格是加号,可以先在别处把加号替换成空格再解码。
编码输出中的十六进制字母是大写(如 %E4),这是 encodeURIComponent 的固定行为。解码时大小写都可以识别。字母和数字本身不会被改写。
编码和解码都在你的浏览器里完成,代码只调用浏览器内置的 encodeURIComponent 与 decodeURIComponent,没有把输入内容发送到任何服务器的请求,也没有保存历史记录。刷新或关闭页面后输入内容就会消失。如果你处理的是带令牌或密码的链接,仍应注意不要在公共设备上留着页面。