URI编码解码工具

encodeURIComponent · encodeURI · URL解析 · 批量处理
🔄 编码/解码
🔍 URL解析
📊 字符对照表
📋 批量处理
encodeURIComponent编码所有特殊字符,包括 : / ? & =
encodeURI保留URL结构字符 : / ? & = # @
urlencode (PHP)同Component但空格编码为+
📝 原始文本 / URL
💻 URI编码结果

📖 URI编码解码工具使用说明

URI编码(也称百分号编码/Percent-encoding)是Web开发中最基础也最容易出错的环节之一。URL中只能包含ASCII字符,中文、空格、特殊符号等都必须经过编码才能安全传输。本工具支持三种编码模式(encodeURIComponent、encodeURI、urlencode),提供URL结构解析、字符对照表和批量处理功能。

一、URI编码解码工具三种编码模式对照

特性encodeURIComponentencodeURIurlencode (PHP)
编码范围编码除 A-Z a-z 0-9 - _ . ! ~ * ' ( ) 之外的所有字符不编码 : / ? # [ ] @ ! $ & ' ( ) * + , ; = -_.~同Component,但空格编码为+而非%20
: / ? & =✅ 编码❌ 不编码(保留URL结构)✅ 编码
空格%20%20+(加号)
适用场景URL参数值、表单字段值完整URL(保留结构)PHP表单数据、query string
JavaScriptencodeURIComponent()encodeURI()
PHPrawurlencode()自定义实现urlencode()

二、URI编码解码工具使用场景

2.1 URL参数值编码

将中文、特殊字符等编码后放入URL参数中传输。例如搜索关键词q=你好世界需要编码为q=%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C,否则URL会被浏览器截断或服务器解析错误。必须使用encodeURIComponent模式。

2.2 API接口调试

调用REST API时,请求参数中的特殊字符(如&=+)必须编码以避免与URL语法冲突。调试时经常需要手动编码参数或解码API返回的编码字符串查看实际内容。

2.3 中文URL和文件名处理

在URL中使用中文路径或文件名(如/文档/报告.pdf)时需要URI编码。分享链接时中文URL被自动编码导致看不懂,需要解码还原查看。

2.4 表单数据编码

HTML表单POST提交时,表单数据默认使用application/x-www-form-urlencoded格式,即urlencode编码。调试表单提交问题时需要编码/解码表单数据。

2.5 重定向URL构建

构建OAuth回调URL、支付跳转URL时,redirect_uri参数本身就是一个URL,需要整体编码(encodeURIComponent)后作为另一个URL的参数值传递。这种"URL中嵌套URL"的场景最容易出错。

2.6 Cookie值编码

Cookie值不能包含空格、分号、逗号等字符。将复杂内容存入Cookie前需要URI编码,读取时解码还原。

2.7 邮件和社交媒体分享链接

构建mailto:链接的subject和body参数、微信/微博分享链接的标题和描述参数时,都需要URI编码确保特殊字符正确传递。

2.8 SEO与爬虫调试

检查搜索引擎爬虫抓取的URL是否正确编码,分析服务器日志中的编码URL,调试canonical标签和sitemap中的中文URL。

三、URI编码解码工具使用教程

第1步:选择功能模块

工具提供四个标签页:「🔄 编码/解码」用于文本与URI编码的互转;「🔍 URL解析」将完整URL拆解为协议、域名、路径、参数等组成部分并逐个解码;「📊 字符对照表」展示常见特殊字符在三种模式下的编码结果;「📋 批量处理」一次处理多条数据。

第2步:选择编码模式

在编码/解码标签页中,点击顶部三个模式按钮切换。encodeURIComponent(默认)编码所有特殊字符包括: / ? & =,适合编码URL参数值。encodeURI保留URL结构字符,适合编码整个URL。urlencode同Component但空格编码为+而非%20,与PHP的urlencode()一致。

第3步:输入文本进行编码

在左侧"原始文本"区域输入或粘贴要编码的内容(中文、URL、特殊字符均可)。工具实时自动编码,结果显示在右侧。下方同时显示输入字符数、字节数、输出长度、被编码的字符数和膨胀比例。还会展示三种模式的对比结果,方便选择最合适的模式。

第4步:粘贴URI编码进行解码

在右侧区域粘贴已编码的URI字符串(如%E4%BD%A0%E5%A5%BD),工具自动解码并在左侧显示原文。支持自动识别%XX+(空格)两种编码格式。

第5步:解析完整URL结构

切换到「🔍 URL解析」标签页,粘贴一个完整URL。工具将其拆解为协议(scheme)、域名(host)、端口(port)、路径(path)、查询参数(query)、锚点(fragment)等组成部分。所有参数自动解码并以表格形式展示参数名、原始值和解码值的对照。

第6步:查看字符编码对照表

切换到「📊 字符对照表」查看空格、!、#、$、&、+、/、:、?、@、中文等40+种特殊字符在三种编码模式下的不同结果。绿色表示不编码(原样保留),红色表示编码(转为%XX格式)。这有助于理解为什么不同场景需要不同的编码模式。

第7步:批量编码或解码

切换到「📋 批量处理」标签页,选择编码/解码方向和编码模式,在文本框中每行输入一条数据(最多500条),点击处理。结果以表格形式展示输入和对应编码/解码结果。

四、URI编码解码工具常见问题

4.1 encodeURI和encodeURIComponent什么时候用哪个?

简单规则:编码URL的某个参数值时用encodeURIComponent(编码一切特殊字符),编码整个URL时用encodeURI(保留://?&等URL结构字符)。最常见的错误是用encodeURI编码参数值导致&=没有被编码。

4.2 空格应该编码为%20还是+?

%20是RFC 3986的标准URI编码,+application/x-www-form-urlencoded的表单编码(PHP的urlencode使用此格式)。在URL路径中应使用%20,在表单POST数据中两者通用。推荐统一使用%20

4.3 中文字符为什么变成那么长的编码?

一个中文字符在UTF-8编码下占3个字节,每个字节编码为%XX格式(3字符),所以一个中文字符变成9个ASCII字符。例如"你"→%E4%BD%A0。这就是URI编码膨胀的主要原因。

4.4 二次编码(双重编码)是什么问题?

如果把已经编码的字符串再编码一次,%号本身也会被编码为%25,导致%E4变成%25E4。解码时只还原一层就会得到错误结果。检查方法:如果编码结果中出现%25,很可能是二次编码了。

4.5 为什么字母和数字不需要编码?

RFC 3986规定URI中的"未保留字符"(A-Z、a-z、0-9、-_.~)可以直接使用不需要编码。它们在任何上下文中都不会产生歧义。

4.6 URL中的#号要编码吗?

看场景。encodeURIComponent会编码#%23(因为作为参数值时#不应有特殊含义)。encodeURI不会编码#(因为它是URL锚点标记)。如果你的参数值包含#,必须用encodeURIComponent。

4.7 数据安全吗?

编码解码均在当前页面PHP后端即时处理,不传输到第三方服务器,处理后不存储任何数据。