Php 编码百分比在单部分形式中丢失,但在多部分形式中有效?

Php 编码百分比在单部分形式中丢失,但在多部分形式中有效?,php,objective-c,forms,encoding,Php,Objective C,Forms,Encoding,我在objective C中使用了一个由单个部分组成的HTTPPOST表单来将数据上传到服务器(PHP),然后使用一个单独的多部分post表单来上传文件 出于各种原因,我刚刚决定将其合并为一个单一的、多部分的形式 然而,当在iPhone上使用完全相同的objc时(也就是说,当我注销我发送的内容时,它的编码百分比在两种方式中都是相同的),在服务器上使用完全相同的php时,我意识到,不知怎的,编码百分比的字符串在单部分形式中丢失了它们的编码百分比,而对于多部分形式,保留百分比编码 在单部件形式中,相

我在objective C中使用了一个由单个部分组成的HTTPPOST表单来将数据上传到服务器(PHP),然后使用一个单独的多部分post表单来上传文件

出于各种原因,我刚刚决定将其合并为一个单一的、多部分的形式

然而,当在iPhone上使用完全相同的objc时(也就是说,当我注销我发送的内容时,它的编码百分比在两种方式中都是相同的),在服务器上使用完全相同的php时,我意识到,不知怎的,编码百分比的字符串在单部分形式中丢失了它们的编码百分比,而对于多部分形式,保留百分比编码

在单部件形式中,相关部分如下所示:

params =[NSString stringWithFormat:@"string=%@", PERCENT_ENCODED_STRING];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]];
如果我注销参数,编码就在那里

而在多部分形式中,相关部分如下所示

    [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];  //boundary of post data section
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: text/plain; name=%@\r\n", @"string"] dataUsingEncoding:NSUTF8StringEncoding]];  //dataname
    [body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];  //blank line
    [body appendData:[PERCENT_ENCODED_STRING dataUsingEncoding:NSUTF8StringEncoding]];  //actual data
    [body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];  //end of line
...
[request setHTTPMethod:@"POST"];
[request setHTTPBody:body];
php在每种情况下都完全相同

以前有人见过这个吗

我很清楚我可能只是在做一些愚蠢的事情,但我整天都在看这件事,却不知道到底发生了什么

提前谢谢

我刚找到这个

还有这个

似乎我所发现的可能是应该发生的事情,原因如下:单部分表单是经过编码的(可能是由另一端的php解码以消除它)。多部分表单不进行编码,因为它们处理的数据量较大,这可能会使它们更长。因此,我假设它们在另一端没有被解码,就像我假设的单部分形式一样

因此,由于我给他们两个已经编码的字符串,php认为它需要解码来自单个部分表单的字符串(因为它不知道编码它的实际上是我,我希望它保持这种方式),而来自多部分表单的字符串保持原样

如果我是从一个非编码字符串开始的,那么在这两种情况下,结果应该是一样的

也许

现在假设这是正确的,我只需要考虑如何处理它(最优雅的解决方案),因为我的应用程序在不同的地方使用单部分和多部分表单,我希望字符串在交给php后保持编码状态