我们为什么会用到 URL Encoding?

有时在一些URL中会看到一些%,是被转码后结果,如:
https://www.google.com/search?q=Hell%C3%B6%20W%C3%B6rld%40Javascript
有时候却没有,那么我们什么情况下需要对URL进行转码呢?
阅读 2.3k
3 个回答

根据 RFC-3986 的有关规范要求,主要有以下几类字符需要编码:

  1. ASCII 控制字符,比如 \n 换行符这种;
  2. 非 ASCII 字符,比如中文;
  3. URL 的保留字符,比如 /&=?# 之类的,URL 里本身用它们做分隔符;
  4. 不安全字符,比如 <>\% 之类的(其实就是 HTML 中的实体转义字符)。因为一个 URL 可以作为内容显示在 HTML 里,出于安全考虑,所以也要转义。

实际中只有第一、三点需要严格遵守,其余的可以适当放宽,主流的编程语言或 HTTP 库都会兼容的。

当你url查询参数的value部分可能会影响到url或者不利于你获取查询参数的时候,你就要用到URL encoding了

比如查询参数本身就是一个url,他可能携带/:&=&等等字符,这都会影响到原url

已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
宣传栏