2012-06-09 37 views
0

?我從列表中構建NSStrings的NSMutableArray,並且一些字母是重音符號(土耳其語)。我已經能夠編碼成NSString和NSLog結果。但是當我將NSString添加到我的NSMutableArray時,編碼不正確。重寫字符在NSString中編碼錯誤

這工作:

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字符串,如果這是必要的,然後解除空格到數組中。

回答

1

你字符串沒有錯誤編碼。你看到的是將完整數組寫入日誌的工件。在這種情況下,首先將數組轉換爲屬性列表格式,然後寫入日誌。

如果您創建一個循環,並分別寫出每個元素的日誌中,你會發現一切正常:

NSUInteger count = [ones count]; 
for (NSUInteger i = 0; i < count; i++) { 
    NSLog(@"element %d: %@", i, [ones objectAtIndex: i]); 
} 
+0

你是對的。事實上,我根本不需要'stringWithUTF8String'編碼,通常的@「」工作正常。謝謝。 – ardochhigh

+0

輸出:元素3:üç 元素4:dört' – ardochhigh

1

這不是失去了編碼,嘗試從NSArray中添加字符串到一個UILabel或的UITextField,它應該是正確的 寫的Unicode表示此行爲只發生在控制檯中,當您的NSLog

+0

你是對的:他們在的UILabel正確顯示。謝謝! – ardochhigh

+0

不客氣:)請不要忘記接受答案,如果它有用:) –