中文 URL 编码对照:%E4%B8%AD 为什么是「中」
「中」的 Unicode 码点是 U+4E2D,UTF-8 编码是三个字节 E4 B8 AD,写进 URL 就是 %E4%B8%AD。所以一个汉字在 URL 里固定占 9 个字符(3 组 %XX),这是 URL 变长的根本原因。
常用字对照
- 中 →
%E4%B8%AD - 文 →
%E6%96%87 - 测 →
%E6%B5%8B - 试 →
%E8%AF%95 - 你 →
%E4%BD%A0 - 好 →
%E5%A5%BD
「中文」连起来就是 %E4%B8%AD%E6%96%87。注意没有分隔符,解析时按 % 逐个读,读满 3 个字节再合并成一个字符。
怎么区分 UTF-8 与 GBK
看 %XX 的个数:
- UTF-8:一个常用汉字 3 个 %XX,首字节通常在 E4–E9 之间。
- GBK:一个汉字 2 个 %XX,首字节通常在 B0–F7 之间,第二字节在 A1–FE。
比如「中文」在 GBK 下是 %D6%D0%CE%C4,只有 4 个 %XX。混用两种编码的链接,用 UTF-8 解会得到乱码(典型表现是一串 锟斤拷 或问号)。
Emoji 占几个字节
常用 Emoji(如 😀 U+1F600)在 UTF-8 下是 4 个字节,即 4 个 %XX。所以 Emoji 比汉字更占 URL 长度,一个表情就吃掉 12 个字符。
组合型 Emoji(带肤色、带 ZWJ 的家庭表情)可能由多个码点组成,长度能到二十多个 %XX。这类内容不适合放进 URL。
什么时候干脆用拼音或英文
中文 URL 编码后长度膨胀 9 倍,且对用户不可读。做 SEO 友好的链接时,通常用拼音或英文 slug(/guide/chinese-url-encode/ 这种),把中文放在页面标题里而不是路径里。
只有在必须原样传递中文参数(如搜索词、文件名下载)时才编码到 URL。此时要注意各层代理、CDN、日志系统对超长 URL 的截断——常见上限是 2KB 到 8KB。
上面这些都不用装软件,也不用注册:打开页面就能用。
打开 URL 编码解码 →常见问题
为什么解码出来是乱码?
编码与解码用的字符集不一致。用 UTF-8 解 GBK 编码的 %XX 就会乱码。先看 %XX 的个数判断原编码(3 个一组是 UTF-8,2 个一组是 GBK),再用对应字符集解。
URL 里能不能直接写中文?
现代浏览器会自动把地址栏里的中文转成 %XX 再发出去,看起来能用。但复制到别处、经过某些代理或日志系统时就可能出问题。跨系统传递时一律显式编码。
全角标点要编码吗?
要。全角的「,」「。」「:」都不在 URL 允许的字符集里,必须按 UTF-8 编码。它们与半角符号是不同的码点,编码结果也不同。