0

ここで同じ問題について質問しました: UTF8 のばかげた問題ですが、やや台無しになったので、新しい質問をして、よりクリーンにしようとしました。

これをもう一度尋ねると、申し訳ありません。

私はこれを機能させようとしていますが、私が望む結果を得ることができません。前のスレッドの推奨事項を試しましたが、まだ機能しません。あなたが理解しているように、私はこれに非常に慣れておらず、本当にそれを読み込もうとしました.

シナリオは次のとおりです。

  • NSMutableArray
  • スウェーデン語の文字を保存する: "ÅÄÖ"
  • NSLog アレイ
  • 出力が正しくありません

コード:

NSMutableArray *myArray = [[NSMutableArray alloc] init];
[myArray addObject: @"==="];
[myArray addObject: @"ÅÄÖ"];
[myArray addObject: @"==="];
NSLog(@"myArray: %@", myArray);

私が得る出力は次のとおりです。

2010-11-10 21:20:17.826 nsmutablearray_test[2976:207] myArray: (
"===",
"\U00c5\U00c4\U00d6",
"==="
)

私が探している出力は次のとおりです。

"===",
"ÅÄÖ",
"==="

この(単純な)問題についてあらゆる種類のことをテストしたので、誰かがこれを修正するコードを見せてくれれば本当にありがたいです。

よろしく

4

3 に答える 3

3

\U00c5は の Unicode コードであるためÅ、技術的には、出力は正しいです。文字列はメモリ内で同じままNSLogですが、期待どおりに出力されていないだけです。しかし、それはまだ同じ文字列です。

于 2010-11-10T20:26:32.760 に答える
2

これがあなたのための簡単な解決策です:

NSMutableArray *myArray = [[NSMutableArray alloc] init];
[myArray addObject: @"==="];
[myArray addObject: @"ÅÄÖ"];
[myArray addObject: @"==="];
NSLog(@"myArray: %@", myArray);

for (NSString *string in myArray) {
    NSLog(@"%@", string);
}

出力:

Swedish[3453:a0f] ===
Swedish[3453:a0f] ÅÄÖ
Swedish[3453:a0f] ===
于 2010-11-10T20:45:29.513 に答える
0

私の記憶が正しければ、これは NSLog が UTF8 を処理する方法に問題があります。最初に説明を NSString に保存してからログに記録してみてください。

いずれにせよ、データは正しいです。これは純粋に NSLog の問題です。

于 2010-11-10T20:27:07.413 に答える