0

NSDictionaries を含む NSArray を JSON 文字列に変換すると、奇妙な文字が表示されます。SBJson と NSJSONSerialization の両方を使用してみましたが、結果は同じでした。

NSDictionary には、アドレス帳の内容、連絡先の名前、電子メール、電話番号が入力され、ほとんどがヘブライ語で書かれています。

文字は次のようになります。

\327\237

これに関する情報が見つかりませんでした。誰か助けてください。

前もって感謝します!

編集*

JSON のスニペットを次に示します。

[
    {"fname":"סתם טקסט"},
    {"fname":"סתם טקסט"},
    {"fname":"נ\327\231ר"}
]

[ {"fname":"סתם טקסט"}, {"fname":"סתם טקסט"}, {"fname":"נסט"} ]

そして、次のコードを使用して JSON を取得しています。

    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:ContactsArray options:NSJSONReadingMutableLeaves error:&err];
    NSLog(@"JSON: %@", [NSString stringWithUTF8String:[jsonData bytes]]);
4

1 に答える 1

2

これらの文字は 8 進数のエスケープ コードです。私は物事を 16 進数で見ることを好みます。\327\237は16 進数です0xD70x9F

U+00D7U+009F(ユニコード文字)を調べました。それらは、MULTIPLICATION SIGN と APPLICATION PROGRAM COMMAND です。この文脈ではそれは意味をなさないので、直接変換する方法はありません。

次に考えたのはUTF-8エンコーディング。D7 9F としてデコードU+05DFます。これはヘブライ文字の最終修道女です。これは、このコンテキストでは理にかなっています。

したがって、UTF-8 文字で表示されているデータは理解されておらず、8 進数がエスケープされていると思います。JSON は 8 進数のエスケープをサポートしていないためNSLog()、エスケープを行っている JSON を出力するために使用しているものは何でもそうだと思います。

于 2013-09-16T10:22:20.527 に答える