发表于: 2007-12-05 12:16:20
在网上找到资料说通过javascript传递参数时如果用了encodeURIComponent函数对参数进行编码,在PHP里面需要用 rawurldecode函数解码,但是我做实验的时候发现在PHP里面直接打印encodeURIComponent编码后的字符串都能正确显示(使用 rawurldecode解码后打印出来的也显示正常),我想是不是apache或者PHP哪里有这个控制选项可以自动进行解码?请教高人指点?
URI编码是规范,现在很多WEB服务器都是自动编码,解码。
http://www.ietf.org/rfc/rfc2396.txt
格式是:"%" hex hex
如果解码过一次,没有%XX当然再解码也没有意义,但是如果自动解码,就不要自己手动解码,多此一举,而且还可能是错的。
没有必要弄个选项控制要不要解码,就好比你家的电话,没有一个笨蛋会对电信说不要把对方的声音变成声音,传个音频流给我就行了,除非你自己想做个电话。
如果你真的想自己解码,就不要用PHP,自己写个Apache模块,全部都是你自己解码,甚至包括HTTP包。
自动解码,编码应该是PHP模块自己处理的,因为Perl就没有自动解码,需要自己调用CGI模块解码。
用encodeURIComponent不需要解码。。直接使用,犀牛书推荐使用这个。。。
为什么??看 http://www.google.cn/search?hl=zh-CN&q=encodeURIComponent&btnG=Google+%E6%90%9C%E7%B4%A2&meta=
至于用encodeURIComponent编码过的,你用rawurldecode解码还是正常,,原因是没有解码的内容。。。
rawurldecode
对已编码的 URL 字符串进行解码 (PHP 3, PHP 4, PHP 5)
string rawurldecode ( string str )
说明
返回字符串,此字符串中百分号(%)后跟两位十六进制数的序列都将被替换成原义字符。