URL 编解码

中文不乱码 · 区分两种编码方式 · 本地处理

链接里带中文,或者参数里有 & 、? 、# 这种符号,浏览器就会跟你闹脾气。这个工具就是把这些字符转成能安全放进 URL 的样子,反过来也能还原。

两种编码,别用错

这是最多人踩的坑。encodeURIComponent 会把 / ? & = # 这些都转义,encodeURI 不会。

所以有个简单的判断法:你要转的是"一整条链接",就用后者;要转的是"链接里某个参数的值",就用前者。

用反了会怎样?整条链接用 encodeURIComponent 转,? 和 & 全变成 %3F %26,链接就打不开了。

关于 + 号

还有一个老坑:表单提交的时候,空格会被编码成 +。但 URL 标准里空格应该是 %20。这两个东西在不同的解析器里会被当成不同的字符。

你粘进去的字符串里如果有 +,解码时它会先尝试按标准处理。如果不确定,先看看原文到底是 %20 还是 +,比猜快。