我有一个带有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”
如何解决此问题?
答案 0 :(得分:1)
我认为当您尝试保留重音符号而不是NSUTF8StringEncoding
时使用NSASCIIStringEncoding
会更安全。
您可能需要更新服务器编码,因为两者需要匹配。
答案 1 :(得分:1)
通过GET或POST参数传递字符时,应使用百分比转义。
使用stringByAddingPercentEscapesUsingEncoding:
方法。
如果您的服务器支持UTF8(希望它确实如此)并且不允许有损转换(这是您的代码中将“ñ”转换为“ñ”的部分,请不要使用NSASCIIStringEncoding
而是使用NSUTF8StringEncoding
“n” 个)