用文件保存BOM

问题描述

| 有人可以告诉我如何用文件保存字节顺序标记(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表字符为“零宽度”   无中断空格\“字符,U + FEFF,在   Unicode字符集。 我有一个iPhone应用程序,允许用户将文本保存到RTF文件。如果我使用NSUTF8StringEncoding,则所有方法都可以正常工作,除非用户使用日语或中文等双字节字符。一个简单的答案似乎是使用NSUTF16StringEncoding保存文件,这在最近的RTF规范中允许,除了Microsoft Word仅在定义BOM的情况下才可以自动打开UTF-16文件。 我的希望是,如果可以设置通用BOM,则无需识别用户的字符集,因为我无法提前知道它的含义。但是他们仍然可以使用双字节字符打开RTF文件。 感谢您的建议或见识。     

解决方法

        如果您首先将字符串转换为数据,然后将数据写入文件,则NSString \ 1将为您添加BOM。您可以按以下方式编写文件:
NSData *data = [currentFileContent dataUsingEncoding:NSUTF16StringEncoding];
[data writeToFile:filePath options:NSDataWritingAtomic error:&error];