2013-03-01 80 views
2

我创建了一个应用程序,它向我的文件PHP发送两个POST参数,它将数据保存在我的数据库中。Objective-C发送特殊字符POST

代码为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); 

的问题是,如果我插入包含特殊字符的参数(例如éä),我的程序保存为数据库正常字符(ea)。

有人可以帮助我吗?

回答

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

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

+1

非常感谢你 – 2013-03-01 15:45:21