Objective-C发送特殊字符POST

时间:2013-03-01 15:29:42

标签: php objective-c forms http-post urlencode

我创建了一个应用程序,它将两个POST参数发送到我的文件PHP,它将数据保存在我的数据库中。

发送参数的xcode项目代码是:

NSString *post = [[NSString alloc] initWithFormat:@"&key1=%@&key2=%@", myString1, myString2];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://www.mysite.com/test.php"]]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];

我的文件PHP中将数据保存到我的数据库中的代码是:

$val1 = $_POST['key1'];
$val2 = $_POST['key2'];
$val1 = urldecode($val1);
$val2 = urldecode($val2);

$sql = "INSERT INTO test(nome, cognome) VALUES ('$val1', '$val2')";
mysql_query($sql);

问题是如果我插入一个包含特殊字符的参数(例如éä),我的程序会保存到数据库正常字符(e和{{1} })。

有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:2)

NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

这里的问题是您使用的是ASCII,但ASCII不包含é,ä等。您应该使用Unicode。尝试在上面的代码中为NSASCIIStringEncoding切换NSUTF8StringEncoding