0

JSONファイルのオンラインデータを使用したい。現在は機能していますが、特殊文字を使用すると「null」と表示されます。これが私が使用しているコードです:

NSString *urlString = [NSString stringWithFormat:@"http://belesios.com/burc/koc2.php"];
NSURL *url = [NSURL URLWithString:urlString];
NSData *data = [NSData dataWithContentsOfURL:url];
NSError *error;
NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
NSLog(@"%@", json);
NSString *ciktiText = [[NSString alloc] initWithFormat:@"%@", json];
[kocLabel setText:ciktiText];

たとえば、ファイルにçまたはüが含まれている場合、nullが返されます。私は何をする必要がありますか?

4

1 に答える 1

4

次の方法を試して、サーバーからデータを取得するときに使用されるエンコーディングを確認してください。

NSStringEncoding encoding;
NSString *jsonString =[NSString stringWithContentsOfURL:URL usedEncoding:&encoding error:&error];
if (error)
    NSLog(@"Error: %@", error);

サーバーから返されるデータのエンコードを確認する必要があります。コードは正しいですが、エラー!= nilの場合はチェックを追加する必要があります。その後、実行して表示したり、ログに記録したりしないでください。

NSString *jsonString = @"{\"abc\":\"ç or ü\"}";
NSDictionary *jsonObj = [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingAllowFragments error:&error];
NSLog(@"Output: %@", jsonObj);

出力:{abc ="\U00e7または\U00fc"; これは、 Fiddlerまたはその他のソフトウェアを使用して生の応答を出力する場合に、エンコードされたcharを使用した場合のサーバー応答の外観です。

現在、データは次のようになっています。UTF8でエンコードされた文字は\U00e7 =ç のようになります。ここに画像の説明を入力してください

于 2013-02-22T19:39:27.910 に答える