关于 URL编码
摘自 中国Perl协会 用户推广组 tsingson 951513547
http://perlchina.sun126.com/cgi-bin/ccb/index.cgi
对于 CGI 规范,数据传送由 GET 或 POST 两种请求方式传送。
[url "http://www.perlchina.net/cgi-bin/gforum/gforum.cgi?do%3Dpost_write%3Bforum%3D3=%B7%A2%B1%ED%D6%F7%CC%E2"][#ff2b0c]http://www.perlchina.net/cgi-bin/gforum/gforum.cgi?do%3Dpost_write%3Bforum%3D3=%B7%A2%B1%ED%D6%F7%CC%E2[/#ff2b0c][/url][#ff2b0c][/#ff2b0c]
[#ed0000][#090909]上面就是 GET 方式,典型的 URL编码[/#090909][/#ed0000]
[#ed0000][#090909]HTTP 1.0 规范要求 URL 数据以一种能用于几乎任何硬件和软件平台的方式编码。按这种方法组织的信息被称为 URL 编码。由服务器传送给脚本的几乎任何东西都是 URL 编码[/#090909][/#ed0000]
[#ed0000][#090909]作为 QUERY_STRING 或 PATH_INFO 内容传递的参数采用以下形式:
variable1=value1&variable2=value2[/#090909][/#ed0000]
[#ed0000][#090909]对于在表单 form 中定义的每个变量都是这样。
变量由 & 符号隔开
如果发送一个 & 符号,则必须被转义,即,以一个两位数字的16进制编码来代表字符。在 URL 编码中由百分号指示。
因此,%25 表示百分号本身(25是十六进制的,就是以 16 为基,代表百分号的 ASCII 码值)[/#090909]
所有127(7fhex) 以上,和 33 (21hex) 以下的所有字符都会被转义,这包含空格符,空格的转义符为 %20.
加号被解释为空格符。[/#ed0000]
[#ed0000]脚本处理之前必须进行分析与解码。
[/#ed0000] [hr]
在很多 CGI 中,有以下代码 [indent]($key,$value)=split(/=/,$key_value);
$value=~tr/+/ /;
$value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; #URL解码
最后一句代码就是对 URL 编码的参数进行解码还原。
那我们知道,所有中文编码都是 ASCII 在英文字符之上,所以,所有中文都会被编码。[/
posted on 2006-07-18 14:06
汪杰 阅读(967)
评论(1) 编辑 收藏 引用 所属分类:
asp(javascrpt)