2

我创建了一个应用程序,将两个 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);

问题是如果我插入一个包含特殊字符(例如éor ä)的参数,我的程序会保存到数据库普通字符(eand a)中。

有人可以帮我弄这个吗?

4

1 回答 1

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

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

于 2013-03-01T15:32:45.853 回答