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

2つを一致させる必要があるため、サーバーのエンコーディングを更新する必要がある場合があります。

于 2012-09-18T00:20:33.280 に答える
1

GET または POST パラメーターを介して文字を渡す場合は、パーセント エスケープを使用する必要があります。

stringByAddingPercentEscapesUsingEncoding:そのためのメソッドを使用してください。

また、サーバーが UTF8 をサポートし (できればサポートしている)、非可逆変換を許可しない場合は使用しないでください (これは、"ñ" を "n" に変換するコード内の部分です) NSASCIIStringEncodingNSUTF8StringEncoding

于 2012-09-18T00:33:51.857 に答える