三个方向都直接用浏览器自带的标准函数,行为与其它语言的开发库一致:编码=encodeURIComponent(把文本/参数值转成 UTF-8 百分号编码,只留 A-Z a-z 0-9 - _ . ! ~ * ' ( ));整条网址=encodeURI(额外放过 : / ? & = # + , ; @ $ 这些结构字符,所以网址还能保持形状);解码=decodeURIComponent,把左框里的百分号串还原回原文。
左框进、右框出,三个按钮都是这个方向;右框只读,方便整段复制。
| 按钮 | 结果 |
|---|---|
| 编码(encodeURIComponent)本页对原文的真实输出 | %E8%B5%B7%E6%BA%90%E8%AE%A1%E5%88%92%20is46.com |
| 整条网址(encodeURI)输入 https://www.is46.com/起源计划?a=1&b=2 | https://www.is46.com/%E8%B5%B7%E6%BA%90%E8%AE%A1%E5%88%92?a=1&b=2 |
| 同一条网址用「编码」按钮结构字符也会被转义——这才是把 URL 当参数值时想要的形式 | https%3A%2F%2Fwww.is46.com%2F%E8%B5%B7%E6%BA%90%E8%AE%A1%E5%88%92%3Fa%3D1%26b%3D2 |
| 解码(decodeURIComponent)把第 1 行结果放回左框点「解码」 | 起源计划 is46.com |
2026-10-15 重写:本页原本是「逐字符输出 %2B 码点小写十六进制」的非标准实现——中文「起」会变成 %8d77,既不是 UTF-8 百分号编码也不是 %u8D77 扩展,任何标准 urldecode 都解不回来;而且它先用一个大正则限定「必须是网址」,非网址就弹「网址格式不正确」并清空输入。现在按 encodeURIComponent 标准处理,任意文本都能编、也能解。
两个编码按钮怎么选:整条网址保持能用 → 整条网址;要把网址/文本当成一个参数值塞进别的 URL → 编码。空格两者都会转成 %20。
decodeURIComponent 不把 + 当空格(那是 application/x-www-form-urlencoded 的规则)。如果串来自表单 POST 体,先把 + 换成空格再解;遇到落单的 % 或非法十六进制,本页会明确报错而不是给出乱码。