在QLPreviewController中使用元音变量查看UTF-8编码的CSV文件时出现问题

时间:2012-03-04 17:39:14

标签: ios encoding csv utf-8 qlpreviewcontroller

在我的应用程序中,我使用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];

以下是显示内容:

enter image description here

3 个答案:

答案 0 :(得分:1)

我也有这个问题,我认为这是QLPReviewController中的一个错误。我向Apple提交了一个错误,但还没有看到任何解决方案。

答案 1 :(得分:1)

查看utf-8 html文件时也遇到此问题。

我通过在标题中设置<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>来解决它。

UTF-16Latin1在没有编码标头的情况下工作正常,所以如果你这样做的话。在UTF-16编码您的文件应该可以。

答案 2 :(得分:0)

得到了..

尝试更改数据编码

csvWriter.encoding = NSUTF16BigEndianStringEncoding;

它对我有用..