有时在一些URL中会看到一些%,是被转码后结果,如:
https://www.google.com/search?q=Hell%C3%B6%20W%C3%B6rld%40Javascript
有时候却没有,那么我们什么情况下需要对URL进行转码呢?
有时在一些URL中会看到一些%,是被转码后结果,如:
https://www.google.com/search?q=Hell%C3%B6%20W%C3%B6rld%40Javascript
有时候却没有,那么我们什么情况下需要对URL进行转码呢?
根据 RFC-3986 的有关规范要求,主要有以下几类字符需要编码:
\n
换行符这种;/
、&
、=
、?
、#
之类的,URL 里本身用它们做分隔符;<
、>
、\
、%
之类的(其实就是 HTML 中的实体转义字符)。因为一个 URL 可以作为内容显示在 HTML 里,出于安全考虑,所以也要转义。实际中只有第一、三点需要严格遵守,其余的可以适当放宽,主流的编程语言或 HTTP 库都会兼容的。
当你url查询参数的value部分可能会影响到url或者不利于你获取查询参数的时候,你就要用到URL encoding了
比如查询参数本身就是一个url,他可能携带/
、:
、&
、=
、&
等等字符,这都会影响到原url
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
感谢各位的回答,参考了大家的答案加上我自己查阅一些资料,关于这个问题写了一篇总结,链接:
《我们为什么会用到 URL Encoding》