0

?我正在从一个列表中构建一个 NSMutableArray 的 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 字符串进行编码,然后按空格将字符串解串到数组中。

4

2 回答 2

1

这不会丢失编码,尝试将 nsarray 中的字符串添加到 UILabel 或 UITextField 并且它应该是正确的这种编写 Unicode 表示的行为仅在您 NSLog 时发生在控制台中

于 2012-06-09T07:23:48.483 回答
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 回答