0

?リストから NSStrings の NSMutableArray を作成していますが、一部の文字にアクセントが付いています (トルコ語)。結果を NSString と NSLog にエンコードできました。しかし、その NSString を NSMutableArray に追加すると、エンコーディングが正しくありません。

これは機能します:

NSString* temp = [[NSString alloc] init];
char *str = "üç"; 
temp = [NSString stringWithUTF8String:"üç"];
NSLog(@"str: %@",temp);

ログ出力:

2012-06-09 09:09:18.398 Fluent[1821:f803] str: üç

次のように NSMutableArray に追加しようとすると:

ones = [NSArray arrayWithObjects:@"",@"bir",@"iki",temp,@"dört",@"beş",@"altı",@"yedi",@"sekiz",@"dokuz",nil];
NSLog(@"ones: %@",ones);    

エンコーディングが失われます。

2012-06-09 09:09:18.399 Fluent[1821:f803] ones: (
"",
bir,
iki,
"\U00fc\U00e7",
"d\U00f6rt",
"be\U015f",
"alt\U0131",
yedi,
sekiz,
dokuz)

これを行う方法についてのアイデアはありますか?この分野で私が読んだ投稿は、HTTP 経由の転送に焦点を当てているようです。

これが必要な場合はC文字列をエンコードし、スペースで文字列を解除して配列にするなど、より簡単なアプローチが必要です。

4

2 に答える 2

1

文字列が正しくエンコードされていません。表示されるのは、完全な配列をログに書き込むことによるアーティファクトです。この場合、配列は最初にプロパティリスト形式に変換されてから、ログに書き込まれます。

ループを作成し、各要素を個別にログに書き込むと、すべてが正常であることがわかります。

NSUInteger count = [ones count];
for (NSUInteger i = 0; i < count; i++) {
    NSLog(@"element %d: %@", i, [ones objectAtIndex: i]);
}
于 2012-06-09T07:29:17.610 に答える
1

これはエンコーディングを失っていません。nsarray から UILabel または UITextField に文字列を追加してみてください。正しいはずです。Unicode 表現を書き込むこの動作は、NSLog

于 2012-06-09T07:23:48.483 に答える