2012-09-17 83 views
0

我有一個帶有UItextfield的表單,當輸入這個字符並通過POST方法發送到服務器時,這個字符的內容被轉換。IOS5西班牙字符編碼

例如:此單詞 「NINA」 在文本字段成爲輸出作爲寫下 「√±i√±一個」

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」

我該如何解決這個問題?

回答

1

通過GET或POST參數傳遞字符時,應使用百分號轉義符。爲此,使用stringByAddingPercentEscapesUsingEncoding:方法。

也不要,如果你的服務器支持UTF8(希望它)使用NSASCIIStringEncoding而是NSUTF8StringEncoding並且不允許有損皈依(這是在你的代碼中的一部分轉變「N」到「n」)

1

我認爲當您試圖保留重音標記而不是NSASCIIStringEncoding時,使用NSUTF8StringEncoding會更安全。

您可能需要更新您的服務器編碼,因爲兩者需要匹配。