如何编码:在网址中?

时间:2016-11-28 23:57:38

标签: urlencode url-encoding

我需要发送一个get请求,其中url的最后一部分是json值。我已将以下{"period":"600s"}编码为在多个不同的网站上使用,但是在:未解码的情况下,它们都会得到相同的结果。

已编码的网址:stickiness=%7B%22period%22%3A%22600s%22%7D

我将其输入浏览器时的结果:enter image description here

那么如何编码:

2 个答案:

答案 0 :(得分:1)

%3A :的编码。 URI中保留:以指定端口号(例如google.com:443手动指定使用端口443,即默认的HTTPS端口。如果您想在URI中加入:,则必须为precent-sign-encoded,这就是%3A。它无法在网址栏中解码,因为它会违反:字符的保留用途。

答案 1 :(得分:1)

冒号字符未在浏览器中解码,因为它属于the reserved characters,其他地方的URL已经具有明确含义 - 在这种情况下,将协议与主机名和主机名后的端口分开。

相关标准为RFC 1738,第3页:

  

许多URL方案为特殊含义保留某些字符:      它们在URL的特定于方案的部分中的出现有一个      指定的语义。如果对应于八位字节的字符是      在方案中保留,八位字节必须被编码。那些角色 ”;”,      “/”,“?”,“:”,“@”,“=”和“&”是可能的人物      保留给计划中的特殊含义。没有其他角色可以      在计划中保留。

     

通常,当八位字节为时,URL具有相同的解释      由字符表示并在编码时。但事实并非如此      保留字符为true:编码为a保留的字符      特定方案可能会改变URL的语义。

     

因此,只有字母数字,特殊字符“$ -_。+!*'(),”和      可以使用用于其保留目的的保留字符      在URL中未编码。