NSUnicodeStringEncoding将FFFE添加到每个字符串

时间:2012-10-07 22:07:48

标签: objective-c cocoa

我正在尝试通过首先将其编码为NSUnicodeStringEncoding来将字符串附加到文件中。我这样做:

NSData *data = [@"data" dataUsingEncoding: NSUnicodeStringEncoding];
NSFileHandle *output = [NSFileHandle fileHandleForUpdatingAtPath:@"file"];
[output seekToEndOfFile];
[output writeData:data];

如果我多次这样做,然后看看文件,我注意到每个添加的字符串都附加了FFFE。但是当我从NSUnicodeStringEncoding切换到NSUTF8StringEncoding时,这个前缀消失了。

1 个答案:

答案 0 :(得分:2)

这被称为字节顺序标记,并且放在那里因为NSUnicodeStringEncoding没有指定字符是以大端还是小端顺序存储。

要防止0xFFFE0xFEFF出现在字符串的开头,请使用NSUTF16BigEndianStringEncodingNSUTF16LittleEndianStringEncodingNSUTF32BigEndianStringEncoding或{{1}中的一个根据您的具体需求。 (供参考:Apple使用的Intel和ARM处理器都是小端。)