2011-06-30 3 views
0

utf-8エンコーディングでJSON文字列を送信するPHPサーバーがあります。 データを取得するiPhoneアプリの責任を負う。phpサーバーからiphoneにutf8でjsonを送信する方法の詳細

私は私の側にすべてが正しいことを確認したい:

//after I downlad the data stream : 

NSString* content = [[NSString alloc] initWithData:self.m_dataToParse encoding:NSUTF8StringEncoding]; 

//here the data is shown correctly in the console 

NSLog(@"%@",content); 

SBJsonParser *_parser = [[SBJsonParser alloc]init]; 

NSDictionary *jsonContentDictionary = [_parser objectWithData:self.m_dataToParse]; 

//here, when i printer values of array IN array, i see \u454 u\545 \4545 format. any ideas why ? 

for(id key in jsonContentDictionary) 

{ 

NSLog(@"key:%@, value:%@,key, [ jsonContentDictionary objectForKey:key]); 

} 

イムJSONライブラリの最新バージョンを使用して:問題があり https://github.com/stig/json-framework/

は、iphone側ですか? (jsonパーサー?)またはPHPサーバーですか?

もう一度明確にする:文字列が、JSONをやっ2.after をo.kに見える 1.onコンソールは、JSONの前に、配列値の配列は、事前に\u545 \u453 \u545

感謝の形式です。

答えて

0

コードは正しいです。 問題の考えられる理由は、コンテンツプロバイダー(jsonを送信するサーバー)で調べる必要があります.Json文字列全体がutf-8として正しくエンコードされていても文字列とエンコーディングを指定する必要があります)、テキストコンテンツの一部またはすべて(つまり、jsonメッセージに含まれる単一のオブジェクトの値)がもともと別の形式でエンコードされていることがあります。 htmlエンコーディング(iso-8859)特に、特定の文字が使用されている場合(例えば、キリル文字またはアジア文字)。現在、jsonフレームワークはデフォルトですべてのデータをutf-8としてデコードしていますが、utf-8文字とiso-8859との間にコーディングの不一致がある場合(例のままです)、utf- 8は\ u形式を使用することです。これは非常に頻繁に起こります。特に、PHPスクリプトはhtmlページから情報を抽出します。通常、iso-8859を使ってコード化されています。また、iOSがiso-8859文字の全セットをUnicode(例えば、キリル文字)に変換できないことも考慮してください。 可能な解決策は次のとおりです: - テキストサーバー側(iso-8859 - > utf-8) のコンテンツエンコーディングを行うか、これが不可能な場合、より頻繁に来る\ uxxxシーケンスを認識することはあなた次第ですあなたのコンテンツプロバイダからそれを対応するutf-8文字で置き換えます。

+0

お返事ありがとうございます。 この情報をPHPプログラマーに送ってください。 – mark100

関連する問題