0

最初にエンコードして、ファイルに文字列を追加しようとしていますNSUnicodeStringEncoding。私はこれをやっています:

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

これを何度も行ってからファイルを確認すると、追加されたすべての文字列の先頭に FFFE が追加されていることがわかります。しかし、から切り替えるとNSUnicodeStringEncodingNSUTF8StringEncodingこのプレフィックスは消えます。

4

1 に答える 1

2

これはバイト オーダー マーカーと呼ばれNSUnicodeStringEncoding、文字がビッグ エンディアンまたはリトル エンディアンのどちらで格納されるかを指定しないため、そこに配置されます。

文字列の先頭に表示されないようにする、0xFFFEまたは0xFEFF文字列の先頭に表示されないようにするには、特定のニーズに応じて、、、、またはのいずれかNSUTF16BigEndianStringEncodingを使用します。(参考までに: Apple が使用する Intel および ARM プロセッサはリトルエンディアンです。)NSUTF16LittleEndianStringEncodingNSUTF32BigEndianStringEncodingNSUTF32LittleEndianStringEncoding

于 2012-10-07T22:18:57.557 に答える