在我的应用程序中,我使用CHCSVWriter生成UTF8编码的CSV文件,并使用QLPreviewController显示它。该文件可能有一些特殊字符,如变音符号(ü,ä),我已经检查了文件并正确生成它们。然而,当它们与QLPreviewController一起显示时,字符被搞砸了!我已经检查了我的编码,它们都是UTF-8,所以代码点没有被破坏。 QLPreviewController有问题吗?有什么建议吗?
以下是我用来创建和显示CSV文件的代码:
NSString *path = @"my path";
CHCSVWriter *csvWriter = [[CHCSVWriter alloc] initWithCSVFile:path atomic:NO];
csvWriter.encoding = NSUTF8StringEncoding;
NSDictionary* w;
for (w in items) {
[csvWriter writeField:[w valueForKey:@"a"]];
[csvWriter writeField:[w valueForKey:@"b"]];
[csvWriter writeLine];
}
[csvWriter closeFile];
[csvWriter release];
QLPreviewController *ql = [[QLPreviewController alloc] init];
[ql setDataSource:self];
[self presentModalViewController:ql animated:YES];
[ql release];
以下是显示内容:
答案 0 :(得分:1)
我也有这个问题,我认为这是QLPReviewController中的一个错误。我向Apple提交了一个错误,但还没有看到任何解决方案。
答案 1 :(得分:1)
查看utf-8 html文件时也遇到此问题。
我通过在标题中设置<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
来解决它。
UTF-16
或Latin1
在没有编码标头的情况下工作正常,所以如果你这样做的话。在UTF-16
编码您的文件应该可以。
答案 2 :(得分:0)
得到了..
尝试更改数据编码
csvWriter.encoding = NSUTF16BigEndianStringEncoding;
它对我有用..