有人可以告诉我如何用文件保存字节顺序标记(BOM)吗?例如,我现在保存一个文本文件,如:
NSString *currentFileContent = @"This is a string of text to represent file content.";
NSString *currentFileName = @"MyFileName";
NSString *filePath = [NSString stringWithFormat:@"%@/%@.%@", [self documentsDirectory], currentFileName, rtf];
[currentFileContent writeToFile:filePath atomically:YES encoding:NSUTF16StringEncoding error:&error];
我对BOM的理解是:
BOM字符是“ZERO WIDTH” NO-BREAK SPACE“字符,U + FEFF,in Unicode字符集。
我有一个iPhone应用程序,允许用户将文本保存到RTF文件。如果我使用NSUTF8StringEncoding,所有工作正常,除非用户有双字节字符,如日语或中文。简单的答案似乎是使用NSUTF16StringEncoding保存文件,这在最近的RTF规范中是允许的,除非Microsoft Word只能在定义BOM时自动打开UTF-16文件。
我希望如果我可以设置通用BOM,我不需要识别用户的字符集,因为我无法预先知道它是什么。但是他们仍然可以用双字节字符打开RTF文件。
感谢您的建议或见解。
答案 0 :(得分:1)
如果您首先将字符串转换为数据,然后将数据写入文件,那么NSString的dataUsingEncoding:allowLossyConversion:
将为您添加BOM。您可以按如下方式编写文件:
NSData *data = [currentFileContent dataUsingEncoding:NSUTF16StringEncoding];
[data writeToFile:filePath options:NSDataWritingAtomic error:&error];