?我正在从列表中构建一个NSMtringArray的NSStrings,其中一些字母是重音的(土耳其语)。我已经能够编码成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字符串进行编码,然后通过空格对数组进行解串。
答案 0 :(得分:1)
这不会丢失编码,尝试将nsarray中的字符串添加到UILabel或UITextField,它应该是正确的 编写Unicode表示的这种行为仅在NSLog
时在控制台中发生答案 1 :(得分:1)
您的字符串编码不正确。您看到的是将完整数组写入日志的工件。在这种情况下,首先将数组转换为属性列表格式,然后写入日志。
如果您创建一个循环并将每个元素分别写入日志,您将看到一切正常:
NSUInteger count = [ones count];
for (NSUInteger i = 0; i < count; i++) {
NSLog(@"element %d: %@", i, [ones objectAtIndex: i]);
}