iOS 開発での文字列エンコーディングの問題に遭遇しました。話は以下の通り。
中国語でいくつかの値を作成し、それらの値の NSDictionary を作成します。辞書はネットワーク リクエストのパラメーターとして使用されます。
- (void)createActivity
{
NSString *actionTheme = titleF.text;
NSString *actionTitle = biaotiF.text;
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:actionTheme, @"actionTheme", actionTitle, @"actionTitle",nil];
[self networkrequest:];
}
次に、辞書に対していくつかの作業が行われました。
辞書を NSString の型として JSON の形式に変換します。
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:param options:NSJSONWritingPrettyPrinted error:nil];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
文字列に中国語の単語があるため、文字列をエンコードします。
NSString *urlEncodedString = [jsonString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
最後に、上記の文字列を使用して完全な URL が作成されました。
http://app.ic100.com/action/add?paramJson=%7B%22actionTheme%22%3A%22%E6%88%96%E8%80%85%E5%92%8C%E7%94%9F%E6%B4%BB%22%2C%22actionSite%22%3A%22%E5%8E%A (something like this)
ネットワーク リクエストにサード パーティの「ASIFormDataRequest」を使用し、StringEncoding も設定します。
ASIFormDataRequest *requstHttp = [[ASIFormDataRequest alloc] init];
[requstHttp setStringEncoding:NSUTF8StringEncoding];
....
すべてのデータがサーバーに正常に送信されましたが、サーバーからこれらのデータを要求して iPhone に表示すると、. 読めないテキストになります。
文字列をエンコードまたはデコードする必要があるすべての場所を注意深くチェックしましたが、utf8 のみが使用されています。さらに、サーバー側では、他のエンコーディングも使用されていません。私の同僚は、Android プラットフォームから送信されたデータをテストしましたが、問題ありませんでした。そのため、いくつかの点を見逃している可能性があると思います。
何かアドバイスはありますか?