免费转换器

URL 编码器 / 解码器

在浏览器中即时编码和解码URL及URI组件。免费、私密,无需上传。

关于此工具

URL 编码(正式的百分比编码,在 RFC 3986 中定义)将 URL 中具有特殊含义的字符(空格、斜线、与号、井号)转换为使用百分号后跟十六进制数字的安全形式。空格字符变为 %20(或在表单编码上下文中为 +),& 符号变为 %26,依此类推。如果没有这种编码,特殊字符将被解释为 URL 语法而不是文字数据,从而破坏 URL 或导致意外行为。

存在两种相关但不同的编码。标准 URL 组件编码对非保留字符集之外的所有内容使用 % 转义:A-Z、a-z、0-9、连字符、下划线、句点、波形符。表单编码变体 (application/x-www-form-urlencoded) 另外将空格视为加号,并对其他一些字符使用不同的规则。 JavaScript的encodeURIComponent使用严格的组件编码; encodeURI 使用更宽松的形式来保留 URL 结构字符。

该工具提供编码和解码。编码模式将每个需要转义的字符以%HH格式包裹起来;解码模式反转转换。两者都使用内置 JavaScript URL 函数完全在浏览器中运行,因此不会将数据发送到任何地方。

为什么要对 URL 进行编码或解码

任何时候 URL 中包含数据——查询字符串参数、包含用户输入的路径段、重定向目标——都需要正确的编码。编码失败会产生在出现特殊字符时中断的 URL,泄漏参数边界到查询字符串(将 &x=1 变成单独的参数),或者作为格式错误的请求被 Web 服务器阻止。

解码则相反:从编码的 URL 中提取原始数据。浏览器地址栏通常以编码形式显示 URL;解码揭示了实际意图。日志记录、调试和安全分析都受益于显示原始参数和路径的解码 URL。

使用方法

粘贴字符串,选择方向。

  1. 选择编码或解码: 编码以 %HH 格式包装不安全字符。解码将 %HH 转义回原义字符。
  2. 添加输入文本: 粘贴要编码或解码的字符串。对于编码,这通常是带有空格、特殊字符或非 ASCII 内容的文字值。对于解码,这是包含 %HH 转义符的 URL 或 URL 组件。
  3. 转换: 该工具应用encodeURIComponent 或decodeURIComponent。编码输出可以安全地嵌入 URL;解码后的输出是原始文字值。
  4. 复制或下载: 在任何需要的地方使用结果。编码值适合 URL;解码值揭示原始数据。

常见用例

技术细节

encodeURIComponent 对未保留集 [A-Za-z0-9-_.~] 之外的每个字符进行编码。空格变为 %20,加号变为 %2B,等号变为 %3D,依此类推。 ASCII 之外的字符首先以 UTF-8 进行编码,然后对每个字节进行 % 转义。

encodeURI 更加宽松,适用于完整 URL 而不是组件。它不会转义 /、?、&、=、# 和其他一些字符,因为这些字符具有 URL 语法含义。对于在 URL 中嵌入用户数据,encodeURIComponent 几乎总是正确的选择。

decodeURIComponent 反转 %-转义符,验证每个转义符格式正确,并且结果字节形成有效的 UTF-8。格式错误的输入会引发错误,而不是产生垃圾。

最佳实践

常见问题

哪些字符需要URL编码?
必须对保留字符(&、=、?、#、/、:、@)和不安全字符(空格、<、>、{、}、|、^、~、[、]、`)进行编码。字母数字字符和 -_.~ 是安全的,不需要编码。
encodeURI 和encodeURIComponent 之间有什么区别?
encodeURI 对完整 URL 进行编码,但保留保留字符 (://?#)。 encodeURIComponent 对除 -_.!~*'() 之外的所有内容进行编码 — 将其用于查询参数值。该工具提供两种模式。
URL 中的空格是如何编码的?
空格可以编码为 %20(标准百分比编码)或 +(形式编码)。 %20 对于 URL 路径是正确的,而 + 用于 HTML 表单的查询字符串。该工具默认使用%20。
我可以对 Unicode 字符进行编码吗?
是的。 Unicode 字符首先编码为 UTF-8 字节,然后对每个字节进行百分比编码。例如,“日”变为 %E6%97%A5(三个 UTF-8 字节,每个字节进行百分比编码)。
我应该使用encodeURI 还是encodeURIComponent?
几乎总是对URIComponent进行编码。仅当您有完整的 URL 并希望保留其结构时才使用encodeURI——通常很少见,因为无论如何您都是从组件构建 URL 的。
我的数据是否上传到服务器?
不会。URL 编码和解码完全在您的浏览器中进行。
它可以处理 Unicode 表情符号吗?
是的。表情符号是多字节 UTF-8 序列;编码器生成一系列 % 转义字节,解码器可以将其正确地重新组装回原始表情符号。
如果我的输入有看起来像 %HH 的字符串但实际上并未编码怎么办?
编码将每个 % 转换为 %25,然后对其余部分重新应用转义。解码严格输入会在格式错误的转义上引发错误;看起来不明确的字符串可能无法正确解码。