Ios CSV到NSString到NSData的希伯来文文本问题

Ios CSV到NSString到NSData的希伯来文文本问题,ios,objective-c,nsstring,nsdata,export-to-csv,Ios,Objective C,Nsstring,Nsdata,Export To Csv,我正在使用CHCSVWriter从CoreData创建一个CSV文件,目前为止效果良好,该文件创建得非常完美。我的问题是,当我试图发送我创建的CSV文件时,我遇到了一些问题,我用Excel打开了CSV文件,看到的不是希伯来文,而是乱码 当使用NSLog打印CSV字符串的结果时,我看到的希伯来语很好。即使将其从NSString转换为NSData再转换回来 这就是我得到的: יוסי ×!!׷ר 这是我的代码: - (void)createCSV { CHCSVWriter *w

我正在使用
CHCSVWriter
从CoreData创建一个
CSV
文件,目前为止效果良好,该文件创建得非常完美。我的问题是,当我试图发送我创建的
CSV
文件时,我遇到了一些问题,我用Excel打开了
CSV
文件,看到的不是希伯来文,而是乱码

当使用
NSLog
打印
CSV
字符串的结果时,我看到的希伯来语很好。即使将其从
NSString
转换为
NSData
再转换回来

这就是我得到的:
יוסי ×!!׷ר

这是我的代码:

- (void)createCSV
{
    CHCSVWriter *writer = [[CHCSVWriter alloc] initForWritingToCSVFile:[self csvFilePath]];
    for (EWDBUsers *user in self.users)
    {
        [writer writeField:user.name];
        [writer writeField:user.company];
        [writer writeField:user.email];
        [writer writeField:user.telephone];
        [writer finishLine];
    }

    [writer closeStream];
}

- (NSString*)csvFilePath
{
    NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *filename = @"users.csv";
    return [documentsDirectory stringByAppendingPathComponent:filename];
}

- (void)showMailComposerController
{
    if ([MFMailComposeViewController canSendMail]) {
        MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
        controller.mailComposeDelegate = self;
        [controller setSubject:@"Users List"];
        [controller setMessageBody:@"Attachment." isHTML:NO];

        NSError *error;
        NSString *csvFileString = [NSString stringWithContentsOfFile:[self csvFilePath] encoding:NSUTF8StringEncoding error:&error];
        NSLog(@"%@", csvFileString);
        NSData *csv = [csvFileString dataUsingEncoding:[NSString defaultCStringEncoding]];
        [controller addAttachmentData:csv mimeType:@"text/cvs" fileName:@"users.csv"];

        if (controller) {
            [self presentModalViewController:controller animated:YES];
        }
    } else {
        return;
    }
}
有人能告诉我我做错了什么吗


提前感谢。

您正在看到乱码,因为您正在将Unicode转换为ASCII<代码>[csvFileString dataUsingEncoding:[NSString defaultCStringEncoding]应该是
[csvFileString dataUsingEncoding:NSUTF8StringEncoding]

另外,
mimeType:@“text/cvs”
应该是
mimeType:@“text/csv”

编辑:问题似乎很突出。在TextEdit中打开收到的CSV文件显示的很好


您正在看到乱码,因为您正在将Unicode转换为ASCII<代码>[csvFileString dataUsingEncoding:[NSString defaultCStringEncoding]应该是
[csvFileString dataUsingEncoding:NSUTF8StringEncoding]

另外,
mimeType:@“text/cvs”
应该是
mimeType:@“text/csv”

编辑:问题似乎很突出。在TextEdit中打开收到的CSV文件显示的很好


我怀疑有编码问题。您发送的生成文件的MIME类型无效:
text/cvs

我会使用带有显式字符集参数的text/plain,例如

text/plain;字符集=utf-8

并使用该编码将csv字符串显式编码为
NSData
(例如
NSUTF8StringEncoding

编辑: 实际上,有一种MIME类型
text/csv


因此,您也可以使用:
text/csv;charset=utf-8

我怀疑存在编码问题。您发送的生成文件的MIME类型无效:
text/cvs

我会使用带有显式字符集参数的text/plain,例如

text/plain;字符集=utf-8

并使用该编码将csv字符串显式编码为
NSData
(例如
NSUTF8StringEncoding

编辑: 实际上,有一种MIME类型
text/csv


因此,您也可以使用:
text/csv;charset=utf-8

我的解决方案是在开始时添加BOM字符,以解决Excel在尝试打开CSV文件并保存utf-8编码时出现的错误

cvsStringFile = [[NSString alloc] initWithFormat:@"\357\273\277%@", cvsStringFile];

NSData *myXLSData = [cvsStringFile dataUsingEncoding:NSUTF8StringEncoding];
[picker addAttachmentData:myXLSData mimeType:@"text/csv;charset=utf-8" fileName:@"Report.csv"];

我的解决方案是在开始时添加BOM字符,以解决尝试打开CSV文件并保存UTF-8编码时Excel中的错误

cvsStringFile = [[NSString alloc] initWithFormat:@"\357\273\277%@", cvsStringFile];

NSData *myXLSData = [cvsStringFile dataUsingEncoding:NSUTF8StringEncoding];
[picker addAttachmentData:myXLSData mimeType:@"text/csv;charset=utf-8" fileName:@"Report.csv"];

NSUTF8StringEncoding也使用了
NSUTF8StringEncoding
,但同样的问题。我想在Windows中,CSV文件会工作得很好,可能只是Excel for Mac的问题。很好的答案,很好地处理文本编辑。非常感谢。NSUTF8StringEncoding也使用了
NSUTF8StringEncoding
,但同样的问题。我想在Windows中,CSV文件会很好地工作,可能只是Excel for Mac的问题。很好的答案,很好地处理文本编辑。非常感谢。你需要更具体一些。你能用文本编辑器读取收到的文件吗?UTF-8是否合适?源文件和目标文件比较是否相等?是否有任何错误消息?您需要更具体一些。你能用文本编辑器读取收到的文件吗?UTF-8是否合适?源文件和目标文件比较是否相等?是否有任何错误消息?是否有类似于“”的身体面部问题,请帮助我..是否有类似于“”的身体面部问题,请帮助我。。