关于rawurldecode PHP自动解码

发表于: 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 )

说明
返回字符串,此字符串中百分号(%)后跟两位十六进制数的序列都将被替换成原义字符。

时间: 2024-09-29 08:26:39

关于rawurldecode PHP自动解码的相关文章

MVC 接收参数时会自动解码

MVC在接收传递过来的参数时,会自动对参数进行解码,无需手动解码 例: public ActionResult SendMsg2(string name) { return Content(name); } public ActionResult SendMsg1() { return Content(Url.Encode("大家好")); } 首先执行SendMsg1 方法,获取到“大家好”的编码,然后复制编码. 然后执行SendMsg2 方法,并将编码当做参数传递,则SendMsg

c# url自动解码解决方案

昨天下午易宝维护人员联系我,询问我三笔订单的状态,他们是扣费成功了,我们这还是订单待扣费状态,经过检查发现双方的签名有问题,仔细一看这三笔订单都有一个共性,用户名都包含中文,然后就对症下药... 由于易宝再扣费成功后通知我方前,对字符串用gb2312 urlencode了,而我方接口是用.net实现的,所以默认的编码格式是utf-8,所以接收到请求后就把字符串的内容用utf-8 urldecode了,导致我这边HttpUtility.UrlDecode(Request["user_name&qu

JavaScript字符集编码与解码

一.字符集 1)字符与字节(Character) 字符是各种文字和符号的总称,包括乱码:一个字符对应1~n个字节,一字节对应8位,每位用0或1表示. 2)字符集(Character Set) 字符集是多个字符的集合,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集.GB2312字符集.Unicode字符集等. 3)字符集编码(Character Encoding) 字符集编码就是将符号转换为计算机可读的二进制,解码就是把二进制转换为人类可读的符号. 字符集大多对应一种编码方式(例如

Netty编解码框架分析

1. 背景 1.1. 编解码技术 通常我们也习惯将编码(Encode)称为序列化(serialization),它将对象序列化为字节数组,用于网络传输.数据持久化或者其它用途. 反之,解码(Decode)/反序列化(deserialization)把从网络.磁盘等读取的字节数组还原成原始对象(通常是原始对象的拷贝),以方便后续的业务逻辑操作. 进行远程跨进程服务调用时(例如RPC调用),需要使用特定的编解码技术,对需要进行网络传输的对象做编码或者解码,以便完成远程调用. 1.2. 常用的编解码框

编解码-marshalling

JBoss的Marshalling序列化框架,它是JBoss内部使用的序列化框架,Netty提供了Marshalling编码和解码器,方便用户在Netty中使用Marshalling. JBoss Marshalling是一个Java对象序列化包,对JDK默认的序列化框架进行了优化,但又保持跟java.io.Serializable接口的兼容,同时增加了一些可调的参数和附加的特性,这些参数和特性可通过工厂类进行配置. import lombok.Data; import java.io.Seri

【转】Netty系列之Netty编解码框架分析

http://www.infoq.com/cn/articles/netty-codec-framework-analyse/ 1. 背景 1.1. 编解码技术 通常我们也习惯将编码(Encode)称为序列化(serialization),它将对象序列化为字节数组,用于网络传输.数据持久化或者其它用途. 反之,解码(Decode)/反序列化(deserialization)把从网络.磁盘等读取的字节数组还原成原始对象(通常是原始对象的拷贝),以方便后续的业务逻辑操作. 进行远程跨进程服务调用时(

java编码解码乱码问题

服务器设值(中文)到界面使用了两次编码: 1 String pageJson=URLEncoder.encode(URLEncoder.encode(str,"GBK"), "GBK"); 2 request.setAttribute("pageJson",pageJson); 然后在界面又接收到的值传到后台,用的是地址栏直接url: window.location.href="...test.do?method=test&pa

编解码(编码解码)常识

字符编码 字符编码就是以二进制的数字来对应字符集的字符,常见字符编码方式有:ISO-8859-1(不支持中文),GB2312,GBK,UTF-8等.在JavaWeb中, 经常遇到的需要编码/解码的场景有响应编码/请求编码/URL编码: 响应编码 服务器发送数据给客户端由Response对象完成,如果响应数据是二进制流,就无需考虑编码问题.如果响应数据为字符流,那么就一定要考虑编码问题: response.getWriter()默认使用ISO-889-1发送数据,而该字符集不支持中文,因此遇到中文

Python编码与解码

一.什么是编码 编码是指信息从一种形式或格式转换为另一种形式或格式的过程. 在计算机中,编码,简而言之,就是将人能够读懂的信息(通常称为明文)转换为计算机能够读懂的信息.众所周知,计算机能够读懂的是高低电平,也就是二进制位(0,1组合). 而解码,就是指将计算机的能够读懂的信息转换为人能够读懂的信息. 二. 编码的发展渊源 之前的博客中已经提过,由于计算机最早在美国发明和使用,所以一开始人们使用的是ASCII编码.ASCII编码占用1个字节,8个二进制位,最多能够表示2**8=256个字符. 随