URL 编码(encodeURIComponent)与解码
URL 编码(又叫百分号编码)会把 URL 中的保留字符或不安全字符——空格、中文、& = ? # 等——转义成 %XX 形式的十六进制序列,让 URL 在浏览器、服务器、日志之间传输时不会被歧义解析。
本工具提供三种模式:把文本编码为 URL 安全字符串、把百分号编码解回原文、以及解析整个 URL 的组成部分(协议、主机、端口、路径、查询、锚点)。所有处理基于浏览器原生 encodeURIComponent / decodeURIComponent / URL API,本地运行。
name=张三&city=北京 朝阳区name%3D%E5%BC%A0%E4%B8%89%26city%3D%E5%8C%97%E4%BA%AC%20%E6%9C%9D%E9%98%B3%E5%8C%BAhello%20world%21%20%F0%9F%91%8Bhello world! 👋https://toolcozy.com/t/url?q=base64&lang=zh#sectionprotocol: https:
host: toolcozy.com
pathname: /t/url
search: ?q=base64&lang=zh
hash: #section
params: q=base64, lang=zhencodeURIComponent 会转义除字母、数字和 - _ . ! ~ * ' ( ) 之外的所有字符,适合用作查询参数值或路径段;encodeURI 不会转义 URL 结构性字符(: / ? # & =),只在你拿到的就是完整 URL、想顺手修一下不安全字符时用。本工具采用前者。
几乎一定是字符编码不匹配。现代 URL 默认 UTF-8,但有些老系统用 GBK 等编码做百分号编码。如果原始字节不是 UTF-8,解出来的就不是合法字符——这种情况需要用对应的原编码再解一次。
只编码值。把整个 URL 丢进 encodeURIComponent 会把 : 和 / 都转义掉,结果就不再是合法 URL 了。请先把每个查询参数单独编码,再拼回去。
再解码一次即可。%2520 → %20 → 空格。常见原因是客户端编码了一次,框架或代理又编码了一次。多系统串联时尤其要注意。
不支持——URL 构造函数需要带协议的绝对 URL。如果只有路径和查询,可以前面加 https:// 凑出完整 URL,或者直接用解码模式看原文。