2013-03-01 84 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