0

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

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

如果我多次执行此操作,然后查看文件,我注意到添加的每个字符串都有 FFFE 前缀。但是当我切换NSUnicodeStringEncodingNSUTF8StringEncoding这个前缀时,它就消失了。

4

1 回答 1

2

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

要防止0xFFFE0xFEFF不出现在字符串的开头,请根据您的具体需要使用 、 、 或 中NSUTF16BigEndianStringEncodingNSUTF16LittleEndianStringEncoding一个NSUTF32BigEndianStringEncodingNSUTF32LittleEndianStringEncoding(供参考:Apple 使用的 Intel 和 ARM 处理器是 little endian。)

于 2012-10-07T22:18:57.557 回答