2012-03-31 24 views
1

私はそれが英語以外のローカル含まれているので、私はパースの問題に直面し、JSON文字列の下になった:解析JSON文字列(英語の)

{「エラー」:0、「トークン」:「59188a107d705f8c51585d719769e0642ce98b79d86fdace30dbc58efba301ccを」 、 "ステータス": "200"、 "メッセージ":[{"update_time": "2012-03-31 22:50:13"、 "seq": "497"、 "lng":58.4235、 "msg" :"hhhh:≈Π?≈Π? " "lat":23.5866}] "error_msg" : ""}

私はコードの下にしようとしている:それは英語でのみだ場合

NSError* error; 
    NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData //1 
                 options:kNilOptions 
                  error:&error]; 

それは私がJSONで英語以外のローカルに解析できるか、正常に動作します。 docsから

答えて

2

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

あなたの文字列がSafariで正しく表示されないため、これらのいずれかの形式でエンコードされていない可能性があります。データを正当なJSONエンコーディングに再エンコードする必要があります。

+0

エンコードされていない文字列を解析することはできませんか? – user836026

+0

いいえいくつかのヒューリスティックを使ってエンコーディングを決定しようとします(あるエンコーディングや他のエンコーディングの可能性がある特定のパターンを探します)。もちろん、同じ文字列が異なるエンコーディングで異なる法的方法をデコードする可能性があるため、エラーにつながる可能性があります。 –