我正在使用 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 文件显示正常。
关于ios - CSV 到 NSString 到 NSData 与希伯来语文本问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19243059/