关于URL 编解码
URL 编码(又称百分号编码,Percent-Encoding)是将 URL 中的特殊字符、非 ASCII 字符转换为百分号加两位十六进制形式的过程,以确保 URL 在网络传输中不被错误解析。根据 RFC 3986 标准,URL 中只允许出现字母、数字以及 - _ . ~ 等少量保留字符,其他字符(包括中文、空格、&、=、? 等)都需要进行编码。
在前端开发中,URL 编解码无处不在:拼接带中文参数的查询字符串、处理用户输入的搜索关键词、解析第三方回调中的 URL 参数、调试后端接口收到的 query string 异常等。如果忘记对参数编码,常会导致请求失败、参数被截断、甚至 XSS 安全漏洞。
本 URL 编解码工具使用浏览器原生 encodeURIComponent / decodeURIComponent 与 encodeURI / decodeURI 函数,支持中文、Emoji、特殊符号的双向转换,区分完整 URL 编码与查询参数编码两种模式。所有操作在浏览器本地完成,无数据上传。
核心特性
完整 Unicode 支持
正确处理中文、日文、韩文、Emoji 等多字节字符的百分号编码与解码。
双模式切换
encodeURI 模式保留 URL 结构字符(适合完整 URL),encodeURIComponent 模式编码所有非字母数字字符(适合单个参数)。
双向即时转换
一键在原文与编码后的 URL 之间切换,方便验证编码结果或还原可读字符串。
错误友好提示
解码失败时给出明确错误原因(如非法百分号序列),帮助快速定位问题。
本地处理无上传
所有编解码在浏览器内完成,包含敏感参数的 URL 也可放心处理。
使用场景
拼接带中文的查询参数
调用搜索接口时,需要把用户输入的中文关键词进行 URL 编码后再拼接到 ?q= 后面,避免请求被服务器拒绝。
解析回调 URL 中的参数
OAuth 登录、支付回调等场景下,回调 URL 中常包含编码后的参数,解码后才能正确读取业务数据。
调试后端收到的参数异常
当后端收到的 query string 出现乱码或截断时,对比编码前后的字符串可以帮助定位是前端未编码还是后端解码错误。
生成 SEO 友好的 URL
将中文标题转换为 URL 安全的编码形式,避免搜索引擎抓取时出现乱码。
常见问题
encodeURIComponent 和 encodeURI 有什么区别?
encodeURI 不会编码 URL 保留字符(如 :、/、?、&、=),适合编码完整 URL;encodeURIComponent 会编码所有非字母数字字符(除 - _ . ~),适合编码单个查询参数。本工具提供两种模式可切换。
为什么空格被编码成 %20 而不是 + ?
encodeURIComponent 将空格编码为 %20,符合 RFC 3986 规范;application/x-www-form-urlencoded 格式(如表单提交)将空格编码为 +。两种方式都是合法的,但 %20 在 URL 中更通用。
URL 编码能防止 XSS 攻击吗?
URL 编码仅用于确保 URL 传输安全,不能防止 XSS。要防御 XSS,需要在写入 HTML 上下文时使用 HTML 实体编码,写入 JavaScript 上下文时使用 JavaScript 转义。
解码失败提示 "URI malformed" 是什么原因?
通常是输入字符串中包含独立的百分号或非法的百分号编码序列(如 %GG)。请检查输入是否为合法的 URL 编码字符串,百分号后必须跟随两位十六进制字符。