介绍
把文本变成 URL 需要的百分号编码形式,或者把一段编码过的字符串还原成能读的样子。它使用的是编码单个组成部分的那一种,适合一个参数值,不适合一整条地址。
使用方法
粘贴文本后选择编码或解码。对整条 URL 编码会把斜杠和冒号也一起转义,所以请编码你要插进去的那个值,而不是要插进去的那条地址。
编码参数值,而不是整条 URL
有两种编码器,区别在于它们把哪些字符当成结构。组件编码器会转义一切在 URL 里可能充当标点的字符,这正是单个参数值需要的。整条 URL 的编码器则放过分隔符。把前者用在一整条地址上,产出的东西技术上正确、完全不能用,也是这个页面最常帮人抓到的错误。
认出二次编码
百分号自己会被编码成 %25,所以经过两次处理的文本,在本该是空格的位置读作 %2520。识别标志是一个正常转义前面多出来的 %25。一直解码到文本不再变化,然后弄清楚链条里的两个系统哪一个该停下来,因为在末端修是打补丁而不是修好。
常见场景
手写查询字符串、读一条 OAuth 回调而它的 state 参数里又套着一条 URL、以及拆开一个把目标地址包了三层的跟踪链接。每一种的有效动作都一样:解一层、看看出来了什么、重复到它不再让你意外。
常见问题
我的 https:// 怎么变成一堆乱码了?
因为你编码的是整条 URL 而不是里面的一个值。组件编码会把分隔符也转义,这个行为是对的,只是通常不是你想要的。
解码之后还留着 %25。
它被编码了两次。再解一次看看能不能还原。二次编码通常来自一个值先后经过两个系统,而两个系统都以为自己是第一个。
内容会上传吗?
不会,两个方向都在页面里完成。
空格为什么有时变成加号而不是 %20?
表单提交用加号那套约定,URL 用百分号那套。解码器按错的约定来处理,输出里就会留下多余的加号。
相关工具
- 开发者与文本工具
- JSON 本地格式化
在浏览器里格式化、压缩并校验 JSON。
- 时间戳与日期互转
在 Unix 时间戳与可读日期之间转换。
- UA 字符串解析
从 UA 字符串提取浏览器、系统与设备提示。
- Cookie 三种格式互转
在 HTTP Cookie、JSON 与 Netscape 格式之间转换。
- 名单文本清洗
去空白、去重、排序、大小写、提取邮箱。
- 分隔文本转表格
按分隔符拆成表格,可复制 CSV / TSV。