我创建了一个应用程序,它将两个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} })。
有人可以帮我这个吗?
答案 0 :(得分:2)
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
这里的问题是您使用的是ASCII,但ASCII不包含é,ä等。您应该使用Unicode。尝试在上面的代码中为NSASCIIStringEncoding
切换NSUTF8StringEncoding
。