Php 使用IOS sdk发送带空格的两个单词时GET方法不起作用

Php 使用IOS sdk发送带空格的两个单词时GET方法不起作用,php,ios,Php,Ios,这是我的代码,如果我传递了一个英语单词,它可以正常工作,但如果我传递了多个包含空格或阿拉伯语单词,它就不起作用 NSString *url = [NSString stringWithFormat:@"http://localhost:8888/addcomm.php?nickname=%@&comm=%@&pos=%@",nick,comm.text,postid]; NSData *data =[[NSData alloc] initWithContentsOfURL

这是我的代码,如果我传递了一个英语单词,它可以正常工作,但如果我传递了多个包含空格或阿拉伯语单词,它就不起作用

NSString *url = [NSString stringWithFormat:@"http://localhost:8888/addcomm.php?nickname=%@&comm=%@&pos=%@",nick,comm.text,postid];
    NSData *data =[[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:url]];
    NSString *res = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
下面是我的php代码:

$n1 = $_GET['nickname'];
$c1 = $_GET['comm'];
$p1 = $_GET['pos'];

$n = urlencode($n1);
$c = urlencode($c1);
$p = urlencode($p1);

echo $n;
echo $c;
echo $p;
mysql_query("set character_set_server='utf8'");
mysql_query("set names 'utf8'"); 

你的问题不在于PHP代码,而在于你的目标C代码。 在将字符串传递给PHP之前,应该首先对字符串进行编码

请换字符串

    NSData *data =[[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:url]];
要设置字符串,请执行以下操作:

    NSData *data =[[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:[url stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]]];

这应该管用

对于阿拉伯语,我必须在php代码中添加:

$n1 = $_GET['nickname'];
$c1 = $_GET['comm'];
$p1 = $_GET['pos'];

$n = urlencode($n1);
$c = urlencode($c1);
$p = urlencode($p1);

echo $n;
echo $c;
echo $p;
mysql_query("set character_set_server='utf8'");
mysql_query("set names 'utf8'"); 
以及我的Xcode代码中的更改:

NSASCIIStringEncoding


你能确认你的NSString是否正确地输入了这些值吗?@David是的,如果它是一个英文单词,没有空格,它就可以工作。你必须在插入它们之前对nick,comm.text,postid进行URL编码,即,
space
变成
%20
@DanZimm ok,阿拉伯语怎么样language@DanZimm链接到并不总是明智的:Pyes这是工作,但给我这样的:hello+world如何删除加号,它也不适用于阿拉伯语是的,它确实删除了加号,但我正在寻找阿拉伯语的解决方案,请,感谢您对阿拉伯语的支持尝试将目标C代码更改为StringByAddingPercents EscapeSusingEncoding:NSUTF8StringEncoding您还有其他想法吗