URL 编码/解码 — UTF-8 安全
用于把文本安全嵌入 URL、查询参数、表单数据。正确处理空格、特殊字符、Unicode (含 CJK 与表情符号)。
工作原理
URL 编码是什么
URL 限定使用一小组 ASCII 字符。要包含其他内容 — 空格、重音字符、汉字、表情符号、特殊符号 — 你需要把每个不安全字节替换为 %XX (XX 是其十六进制字节值)。空格变 %20, 斜杠变 %2F, 汉字「漢」变 %E6%BC%A2 (其 UTF-8 字节的百分号编码)。
本工具使用浏览器内置的 encodeURIComponent 与 decodeURIComponent。它对所有非保留字符 (字母、数字、-._~) 进行编码, 适合查询参数与表单数据。
encodeURI 与 encodeURIComponent
JavaScript 有两种编码器。encodeURI 不转义 URL 结构字符 (/、?、&、#、=、+ 等) — 用于完整 URL。encodeURIComponent 把那些都转义 — 用于查询参数内的值。
本工具使用 encodeURIComponent, 嵌入任意文本到 URL 时更安全。如有完整 URL 结构想保留, 只编码需要部分。
常见陷阱
URL 中的「+」: 一些服务器把 + 当空格 (旧表单编码遗留)。encodeURIComponent 不变 + 但服务器可能解码为空格。安全起见把 + 替换为 %2B 后再当数据发送。
重复编码: 对已编码的字符串再编码会加一层 (% 变 %25, 「%20」变「%2520」)。先确认输入是否已编码再编码。
长度增加: UTF-8 多字节字符每个展开为 3-4 个百分号代码。100 字符的中文/日文字符串 URL 中可能变 700+ 字符。
常见问题
›为什么我的空格没解码为空格?
应该解码 — 但如果 URL 含「+」也可能是空格 (旧表单编码)。需要时先把 + 替换为空格。
›支持表情符号?
支持。表情符号编码为 UTF-8 字节序列 (通常每个表情 4 字节 / 4 个百分号代码)。
›URL 编码与 HTML 编码区别?
URL 编码是 URL 上下文的 % 表示。HTML 编码是 < > 等 HTML 转义。不同上下文不同规则。
›什么时候应该编码?
把任何值放入 URL 查询参数、含用户输入的路径段、表单数据时编码。不要对已构建的 URL 再编码 — 那会重复编码。
›为什么解码文本中「%」会出错?
「%」后跟非有效十六进制字符是无效百分号编码。URL 中要包含「%」请编码为「%25」。
›浏览器自动编码吗?
构建 URL 用 URL 或 URLSearchParams API 时浏览器自动处理。本工具用于临时手动转换。
›什么字符是「安全」无需编码?
字母 (A-Z、a-z)、数字 (0-9)、和: - . _ ~。其他都被 encodeURIComponent 转义。
›数据会上传吗?
不会。编码与解码都在本地。
相关工具
最后更新: