跳到主要内容

URL 编码

​

编码方式
扫描结果

输入文本就会即时转成网址可以使用的格式:中文、空格、&、? 这些字符会变成 %E5%8C%97 这样的百分号编码,放进网址、API 参数或推广链接都不会出错。可以选择只编码“参数值”,或保留结构的“整段网址”。要把 %XX 转回中文,切换到上方的解码标签,或使用 URL 解码。所有转换都在你的浏览器里完成,数据不会上传。


如何使用 URL 编码​

  1. 在输入框输入或粘贴文本,下方立即显示编码结果,例如“北京”会变成 %E5%8C%97%E4%BA%AC。
  2. 选择编码方式:“参数值(全部编码)”(默认)编码所有特殊字符,适合放在 ?q= 后面的值;“整段网址(保留 : / ? & = #)”保留 : / ? & = #,只编码中文和空格,适合把整个含中文的网址转成可以分享的链接。
  3. 选项:“空格转成 +”是表单格式;“严格 RFC 3986(连 ! ' ( ) * 也编码)”用于 OAuth 签名等 API;“每行分别编码”可以一次处理多个关键词或网址。
  4. 点击“复制”复制结果,或点击“转到解码”解码回来确认。

URL 编码(百分号编码)是什么​

网址只能使用一小部分 ASCII 字符,其他字符(中文、空格、部分符号)都要转成 % 加两个十六进制数字,这就是百分号编码(Percent-encoding),也叫 URL 编码。中文会先按 UTF-8 转成字节,每个字节再写成一组 %XX;一个汉字通常是 3 个字节,所以会变成 3 组:

文字UTF-8 字节URL 编码
北京E5 8C 97 E4 BA AC%E5%8C%97%E4%BA%AC
空格20%20 (+)
&26%26
#23%23

哪些字符需要编码​

字符类型字符需要编码吗
非保留字符A–Z、a–z、0–9、-、_、.、~不用,任何地方都可以直接使用
保留字符: / ? # [ ] @ ! $ & ' ( ) * + , ; =作为网址结构时不编码;出现在参数值里就要编码
其他字符中文、空格、%、"、<、> 等一定要编码

例如搜索“AT&T”时,& 如果不编码,会被当成下一个参数的开始,网址就变成 ?q=AT 和另一个参数 T。

“参数值”和“整段网址”的区别​

  • 参数值(encodeURIComponent):连 / ? & = : 都编码,用于单个参数值或路径片段。
  • 整段网址(encodeURI):保留网址结构需要的符号,只编码中文、空格等字符。

把完整网址用“参数值”模式编码,会得到 https%3A%2F%2F…,这是要把整个网址放进另一个网址的参数(例如 ?redirect=)时才需要的写法。

%20 和 + 的区别​

在网址路径和一般情况下,空格要写成 %20;但在 HTML 表单提交的查询字符串(application/x-www-form-urlencoded)里,空格会写成 +,百度、Google 搜索网址就是这种格式。本工具默认用 %20,勾选“空格转成 +”就会改成 +。

各编程语言的 URL 编码写法​

语言参数值(空格 → %20)表单格式(空格 → +)
JavaScriptencodeURIComponent(s)new URLSearchParams({ q: s }).toString()
Pythonurllib.parse.quote(s, safe='')urllib.parse.quote_plus(s)
JavaURLEncoder.encode(s, UTF_8).replace("+", "%20")URLEncoder.encode(s, UTF_8)
C#Uri.EscapeDataString(s)WebUtility.UrlEncode(s)
PHPrawurlencode($s)urlencode($s)
Gourl.PathEscape(s)url.QueryEscape(s)

常见问题​

网址里的中文为什么会变成 %E5%8C%97 这种字符串?​

网址只能使用英文字母、数字和少数符号,中文要先转成 UTF-8 字节,再写成 %XX 的百分号编码。浏览器地址栏通常会显示成中文,但复制粘贴时就会变成这种编码格式,两者是同一个网址。

%20 和 + 有什么不同?​

两者都代表空格。%20 是网址通用的写法;+ 只在表单提交的查询字符串里代表空格,在网址路径中 + 就是加号本身。不确定时用 %20 最保险。

什么时候用“整段网址”,什么时候用“参数值”?​

要把含中文的完整网址转成可以分享、粘贴进程序的链接时,用“整段网址”,会保留 :/?&= 等结构;只编码某个参数的值(例如搜索关键词),或要把整个网址放进另一个网址的参数里时,用“参数值”。

URL 编码是加密吗?​

不是。URL 编码只是让字符能安全放进网址的格式转换,任何人都能解码回原文,不能用来隐藏账号、密码等数据。

我的数据会被上传吗?​

不会。编码在你的浏览器里直接完成,内容不会传到本网站或任何第三方服务器。

其他实用工具