ios - CSV 到 NSString 到 NSData 与希伯来语文本问题

标签 ios objective-c nsstring nsdata export-to-csv

我正在使用 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"

编辑:问题似乎出在 Excel 上。在 TextEdit 中打开收到的 CSV 文件显示正常。

enter image description here enter image description here

关于ios - CSV 到 NSString 到 NSData 与希伯来语文本问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19243059/

相关文章:

ios - 在 Sprite Kit 中执行您自己的碰撞物理计算

UITableViewCell 中的 iOS UICollectionView

objective-c - 应用程序因 [WAKScrollView canBecomeFocused] : unrecognized selector sent to instance 崩溃

ios - Objective-C 在另一个 XiB 中使用自定义 XiB

objective-c - 从 NSTextView Objective-C 获取选择(突出显示的文本)字符串

ios - 在 swift 4 中使用 webkit 在 webView 中导航时创建事件指示器

ios - 是否可以将手机麦克风的输入转换到接收器?

objective-c - 如果按下关闭按钮,则终止 Mac OSX 应用程序

objective-c - NSString 大小与属性 : Inaccuracy

objective-c - 覆盖粘贴: to format text