我正在尝试通过首先将其编码为NSUnicodeStringEncoding
来将字符串附加到文件中。我这样做:
NSData *data = [@"data" dataUsingEncoding: NSUnicodeStringEncoding];
NSFileHandle *output = [NSFileHandle fileHandleForUpdatingAtPath:@"file"];
[output seekToEndOfFile];
[output writeData:data];
如果我多次这样做,然后看看文件,我注意到每个添加的字符串都附加了FFFE。但是当我从NSUnicodeStringEncoding
切换到NSUTF8StringEncoding
时,这个前缀消失了。
答案 0 :(得分:2)
这被称为字节顺序标记,并且放在那里因为NSUnicodeStringEncoding
没有指定字符是以大端还是小端顺序存储。
要防止0xFFFE
或0xFEFF
出现在字符串的开头,请使用NSUTF16BigEndianStringEncoding
,NSUTF16LittleEndianStringEncoding
,NSUTF32BigEndianStringEncoding
或{{1}中的一个根据您的具体需求。 (供参考:Apple使用的Intel和ARM处理器都是小端。)