URL编码工具
使用我们的URL编码工具将任何字符串输入编码为URL格式,确保网址的正确性和安全性。

URL编码工具是一款免费工具,可将字符串转换为URL查询参数及其他文本型网页数据所使用的表单编码格式。
什么是URL编码,为什么要使用它?
URL编码会把在URL中具有特殊含义的字符替换为百分号,后面跟十六进制数字。这样,文本就能通过仅接受有限字符集的系统。
例如,&符号用于分隔查询参数。如果&符号本身属于某个参数值,就必须编码为%26。空格也需要特殊处理。本工具使用PHP的urlencode函数,将空格转换为加号。
编码前:tea and cake
编码后:tea+and+cake
你可能会在以下场景中看到经过URL编码的文本:
- 网页表单提交的查询字符串;
- 包含无法按原样直接出现的文本的数据URI;
- 电子邮件中的链接;
- JSON载荷中存储的URL值;
- Web应用使用的重定向参数和回调参数;
- 与国际化域名相关的URL,不过域名本身可能需要使用Punycode,而不是百分号编码。
URL编码并不是加密,不能提供任何保密性。任何能看到百分号编码URL值的人都可以将其解码。

URL编码工具怎么用?
输入需要编码的字符串,运行工具,然后在URL 编码字段中查看转换后的值。只编码值本身,不要把两侧的引号或说明文字一起编码。
编码过程在服务器上完成。你的输入会通过HTTPS发送到服务器,但不会被存储。即便如此,也不要把密码、会话令牌或个人隐私数据放进URL,因为网址可能出现在浏览器历史记录、分析系统和服务器日志中。
如需还原内容,请使用URL解码工具。只要编码和解码使用相同的字符编码及表单编码规则,正确解码后的值就应与原始文本一致。

应该编码整个URL,还是只编码参数值?
通常应分别编码每个参数值,而不是对完整URL进行编码。否则,冒号、正斜杠、问号和等号等用于构成URL结构的字符也会被替换。
假设搜索值是green tea & coffee,编码后为green+tea+%26+coffee,可以放在参数名之后。如果编码整个地址,浏览器用来识别URL方案、主机、路径和查询字符串的分隔符也会被掩盖。
本工具使用的urlencode适用于HTML表单风格的查询参数。不过,有些API和路径段采用RFC 3986约定,此时空格会写成%20,而不是+。请确认接收系统需要的是使用+的表单编码,还是使用%20的RFC 3986风格编码。

URL编码示例
ASCII字母和数字会保持可读。空格会变成加号,保留标点和非ASCII文本则以编码后的字节表示。
- hello world编码后是hello+world。
- tea & cake编码后是tea+%26+cake。
- email=test@example.com编码后是email%3Dtest%40example.com。
- 100% ready编码后是100%25+ready。
- 当源文本使用UTF-8时,café编码后是caf%C3%A9。
带重音符号的字母和非拉丁文字会先通过字符编码转换为字节,网页上通常使用UTF-8。之后,不在允许范围内的每个字节都会分别进行百分号转义。因此,一个可见字符可能会生成多组以%开头的内容。
数字不需要特殊处理。输入为空时,不会产生任何编码内容。很长的输入在编码后可能明显变长,因为每个编码字节都要占用三个字符。
为什么URL解码会失败或出现乱码?
解码失败通常是因为输入采用了不同的编码规则、被重复编码,或者其中的数据并非使用预期字符集表示的文本。
- 空格处理方式不同:表单解码器会把+当作空格,而严格的百分号解码器可能会保留加号。
- 重复编码:%26中的百分号本身也可能被编码为%25,最终得到%2526。此时解码一次只会得到%26,而不是原始的&符号。
- 字符编码错误:如果用其他字符集解码UTF-8字节,可能会出现替代符号或乱码。
- 数据是二进制内容,而不是文本:解码后的字节可能属于图片、压缩包或其他文件,将其作为文本显示就会出现乱码。
- 格式或编码表不匹配:URL安全Base64、标准Base64和百分号编码是不同的格式。对Base64文本使用URL解码器,无法还原预期内容。
URL编码没有填充字符。如果解码器提示缺少填充,输入内容很可能是Base64或其他带填充的格式,而不是百分号编码文本。
常见问题
百分号转义中的十六进制字母区分大小写吗?
不区分。百分号转义中的十六进制字母不区分大小写,因此%2F和%2f都表示正斜杠。为保持表示方式一致,建议使用大写十六进制数字。
URL编码能转换国际化域名吗?
不能。对于包含é等字符的域名标签,通常需要进行国际化域名处理,并转换为以xn--开头的ASCII Punycode形式。百分号编码用于URL的其他组成部分,不能代替这种转换。
换行符和制表符会怎样编码?
制表符和换行字节无法直接出现在常规URL值中,因此会进行百分号编码。制表符通常表示为%09,换行符的编码则取决于源文本使用的是LF还是CRLF字符。
为什么把编码后的URL粘贴到应用中仍然无法使用?
应用可能需要原始值,并会自行编码,从而造成重复编码。也可能是因为URL超过总长度限制,或者地址结构部分中的保留字符被编码,导致应用拒绝该URL。编码前,请先确认应用要求提供的是哪个具体组成部分。
编码后的查询字符串可以安全分享吗?
不可以。URL百分号编码只改变内容的表示形式,浏览器和开发者工具仍能显示原始值。分享链接前,请检查查询参数中是否包含电子邮箱地址、账户标识、访问令牌以及其他不应公开的数据。