2016-04-07 11 views
0

私はwincp1251のサーバから応答を受け取り、restkitはマップされたオブジェクト文字列にnilを返します。私はrestKitがRKClient(https://github.com/RestKit/RestKit/commit/0ead8a922219ec42ec6dae6ebe59139a1fd589ae)のプロパティdefaultHTTPEncodingを持っていることを知っていますが、これをどうすれば使用できますか?Restets for IOSのエンコーディングを、Utf8からWincp1251に変更するには

+0

ようこそ。 [質問する](http://stackoverflow.com/help/how-to-ask) – JimHawkins

答えて

0

私はあなたのサーバーがJSONを返すと仮定しています。この場合、サーバーはJSON specに準拠していないため、更新する必要があります。具体的には:

  • JSONテキストがUnicodeで符号化されるエンコード。デフォルトのエンコーディングは UTF-8です。注意すべき

  • 重要な点は、JSONのデシリアライゼーションは、データオブジェクト(NSJSONSerialization)を要するためRestKitは、文字列に応答をアンパックしないことです。そして再び、スペックの状態は:UTF-8、UTF-16LE、UTF-16BE、UTF-32LE、UTF-32BE:

    データはJSONの仕様に記載されている5つのサポートされるエンコーディングのいずれかでなければなりません。データにBOMがある場合とない場合があります。解析に使用する最も効率的なエンコーディングはUTF-8です。このメソッドに渡されるデータをエンコーディングする場合は、UTF-8を使用してください。

    あなたはそれを変更することはできませんのであれば、サーバーの応答を処理するために、あなたは、自分でダウンロードし適切なエンコーディングにデータを変換し、JSONを解凍し、その後にマッピング操作を作成対処する必要がありますそれを使用してください。

    +0

    を見てください。しかし、私はxmlレスポンスを持っていて、jsonではないのですか? –

    +0

    あなたは本当に質問にその情報を追加する必要がありますが、私は問題が同じであり、シリアル化が未知の/サポートされていないエンコーディングエラーを投げていると思います。実際にデータを別々にダウンロードしてデコードしてから、一度そのデータをより良いフォーマットにマップする必要があります。 – Wain

    +0

    ありがとう、それは良い説明、あなたは私の一日を保存する! –

    関連する問題