0

NSDictionaryWeb API からのデータを使用して作成しました。

ログに記録された辞書は次のとおりです。

{
chapter =     {
    text = "\n  \tAmo\U00cc\U0081s";
};

}

ロギング[dict objectForKey:@"chapter"]は次のようになります。

{
text = "\n  \tAmo\U00cc\U0081s";

}

そして、ログ[dict objectForKey:@"text"]に記録すると

AmoÌs

これは正しくありません。/ である必要がありますAmo\U00cc\U0081sAmós

エンコードの問題のようですが、わかりません。なぜこれが起こっているのですか?

ありがとう

4

1 に答える 1

1

NSLog は正しく印刷されています!!!

ログに Unicode テキストを出力することはできません。改行、タブ、\U00cc および \U0081 があり、未読テキストに変換されています。

これはバグではありません。CF と Cocoa が %S と %C を解釈する方法は、printf とそのいとこがそれらを解釈する方法とは異なります。CF と Cocoa は文字を UTF-16 として扱いますが、printf (おそらく) は文字を UTF-32 として扱います。

一部の API (ファイル マネージャーなど) はテキストを CFString ではなく UniChars の配列として渡すため、コア サービスを使用する場合は CF/Cocoa の解釈がより便利です。その配列を null で終了する限り、それを %S と共に使用して文字列を出力できます。

ここからコピペ。

于 2013-01-10T10:26:52.197 に答える