IOS5西班牙语字符编码

时间:2012-09-17 23:45:05

标签: ios character-encoding

我有一个带有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”

如何解决此问题?

2 个答案:

答案 0 :(得分:1)

我认为当您尝试保留重音符号而不是NSUTF8StringEncoding时使用NSASCIIStringEncoding会更安全。

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

答案 1 :(得分:1)

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

使用stringByAddingPercentEscapesUsingEncoding:方法。

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