转换规则
urlencode:返回字符串,此字符串中除了-_.
之外的所有非字母数字字符都将被替换成百分号(%
)后跟两位十六进制数
,空格则编码为加号(+
)
按照每个字符对应的字符编码,不是符合我们范围的,统统的转化为%的形式也就是了。自然也是16进制的形式。
那哪些字符是需要转化的呢?
- ASCII 的控制字符
这些字符都是不可打印的,自然需要进行转化。
- 一些非ASCII字符
这些字符自然是非法的字符范围。转化也是理所当然的了。
- 一些保留字符
很明显最常见的就是“&”了,这个如果出现在url中了,那你认为是url中的一个字符呢,还是特殊的参数分割用的呢?
- 就是一些不安全的字符了。
例如:空格。为了防止引起歧义,需要被转化为“+”。
和编码无关
通过urlencode的转化规则和目的,我们也很容易的看出,urleocode是基于字符编码
的。同样的一个汉字,不同的编码类型,肯定对应不同的urleocode的串。gbk编码的有gbk的encode结果。
apache等服务器,接受到字符串后,可以进行decode,但是还是无法解决编码的问题。编码问题,还是需要靠约定或者字符编码的判断解决。
因此,urleocode只是为了url中一些非ascii字符,可以正确无误的被传输,至于使用哪种编码,就不是eocode所关心和解决的问题了。
编码问题,不是urlencode所要解决的。
比如
你


结论
对于要转换的字符,是先根据编码格式转成对应的字节,然后转成16进制
网友评论