花褪残红青杏小。燕子飞时,绿水人家绕。

URL 解码

Web 十五楼的鸟儿 28273浏览 0评论
HTTP 1.0 规范要求 URL 数据以一种能用于几乎任何硬件和软件平台的方式编码。按这种方法组织的信息被称为 URL-编码。由服务器传给脚本的任何几乎东西都是URL-编码的。作为QUERY_STRING或PATH_INFO内容传递的参数采用如下形式:

variable1=value&variable2=value2

对于在表单中定义的每个变量都是这样。

变量由 & 符号隔开。如果逆向发送一个实际的符号,则它必须被转义,即,以一个两位数字的16进制值编码来代表字符。在URL-编码中由百分号指示。因此,%25表示百分号本身(25是16进制的,或者说以16为基,代表百分号的ASCII码值)。所有127(7hex)以上和33(21hex)以下的所有字符被转义,这包括空格符,它的专义码为%20。同时加号需要被解释作空格符。

脚本处理数据前必须对其进行分析和解码。幸运的是,在大多数编程语言中,这个工作是非常简易的。你的脚本可以对整个串进行扫描,寻找&符号。当找到一个时,脚本在这一点断开串,将前面的内容作为一个变量。变量名是符号前面的东西,值是等号后面的东西。脚本接下来对下一个&符号进行分析,如此继续,直至结束。

分割变量之后,可以安稳的对其解码,按如下步骤进行:

* 用空格代替全部加号;
* 用相应的ASCII字符代替所有%##(百分号后更两位16进制数字)

脚本线性的扫描整个串,而不是循环,这很重要,因为脚本解码的字符会有加号和百分号。

当服务器的POST方法将数据传给你的表单时,脚本检查你的环境变量CONTENT_TYPE 为 application/x-www-form-urlencoded,你的数据需要在使用前解码。

原来还需要16进制的转换,我以为就是ascii,今天才注意了一下--!

转载请注明:鸟儿博客 » URL 解码

游客
发表我的评论 换个身份
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址