无法通过NSString输出ü

时间:2011-12-16 17:10:19

标签: objective-c ios xcode

我创建了一个应用程序,我从rtf文件中读取单词

通过此代码加载文件

self.germanpath = [[NSBundle mainBundle]pathForResource:@"german" ofType:@"rtf"];
germanfile = [[NSString alloc]initWithContentsOfFile:germanpath encoding:NSUTF8StringEncoding error:&error];

文件内容为

  

schockierend knusprig das Schachmatt der Schriftsteller getrocknete   Früchte

当我输出字符串时,像ü这样的字符就像getrocknete Fr\'fcchte一样打印。在app和NSLog语句中,它都以\'开头。

修改

我只是尝试输出

NSLog(@"schockierend knusprig das Schachmatt der Schriftsteller getrocknete Früchte");

它有效。所以我说明了我用来输出它的方法;我正在逐字输出

NSString *startfrom = [[NSString alloc] initWithFormat:@"german%i",i];
NSString *word = nil;
NSScanner *scanner = [NSScanner scannerWithString:germanfile];
[scanner scanUpToString:startfrom intoString:nil];
[scanner scanUpToString:@" end" intoString:&word];
NSString *finalword = [word substringFromIndex:[startfrom length]];
Word.font = [UIFont fontWithName:@"DK Crayon Crumble" size:25.0];
Word.text = finalword;
NSLog(@"%@",finalword);
[startfrom release]; 

1 个答案:

答案 0 :(得分:2)

这是一个RTF文件,而不是纯文本文件。其内容根据RTF文件的编码方式进行编码,包括转义非ASCII字符。

由于iOS上没有原生RTF支持(Mac OS X上有NSAttributedString),您必须滚动自己的RTF解析器才能读取此文件。我不推荐它。如果RTF文件实际上用于存储属性(例如斜体粗体文本),则必须使用解析器路径将其转换为{{ 1}}或其他一些格式。

如果它只是纯文本(因此可以用Unicode字符串完全表示),那么您应该使用已知编码(例如UTF-8)和然后将文件重新创建为TXT文件使用NSAttributedString来阅读它。