0

我有一个带有 UItextfield 的表单,当输入这个字符( á é í ó ú ü ñ )并通过 POST 方法发送到服务器时,这个字符的内容会被转换。

例如:在文本字段中写的这个单词“ñiña”在输出时变为“√±i√±a”

 NSString *post = [NSString stringWithFormat:@"&email=%@&password=%@&id_user=%@&iso_pais=%@&lugar=%@&titulo=%@&comment=%@&api_key=3333333",emailstring,passstring,idstring,locatedAtisocountry,cityLabel.text,title.text,description.text];

                NSLog(@"%@",post);
                NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
                NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];
                NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
                [request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://www.myweb.com/api/exp?format=json"]]];
                [request setHTTPMethod:@"POST"];

post方法的输出是:

&email=username&password=5555&id_user=1032&iso_pais=PL&lugar=Madrid&titulo=ñiña&comment=&api_key=3333333

但是服务器端将键“titulo”的内容解码为“nina”,应该是“ñiña”

我怎样才能用这个字符解决这个问题?

4

2 回答 2

1

我认为NSUTF8StringEncoding当您尝试保留重音符号而不是NSASCIIStringEncoding.

您可能需要更新服务器编码,因为两者需要匹配。

于 2012-09-18T00:20:33.280 回答
1

通过 GET 或 POST 参数传递字符时,您应该使用百分比转义符。

使用该stringByAddingPercentEscapesUsingEncoding:方法。

也不要使用NSASCIIStringEncoding,但NSUTF8StringEncoding如果您的服务器支持 UTF8(希望它支持)并且不允许有损转换(这是代码中将“ñ”转换为“n”的部分)

于 2012-09-18T00:33:51.857 回答