バイナリ データと UTF-8 エンコード データが混在するファイルがあります。
それは何かのように見えます
-----------------
| Binary data |
| (unknown len) |
+---------------+
| Delimiter |
+---------------+
| UTF-8 string | <--- only relevant part of file
+---------------+
| Delimiter |
+---------------+
| Binary data |
-----------------
テキストを抽出しようとしていますが、バイナリ コンテンツは気にしません。ファイルをすべてを UTF-8 としてデコードする文字列に読み込んでから、 を使用しNSScanner
て区切り記号を見つけます。
私の懸念は、バイナリ データの内容によっては、UTF-8 としてデコードすると、デリミタを見つけることができなくなるオフセットの問題が発生する可能性があることです。(デリミタの直前のデータが次のシーケンスを複数のバイトとして解析し、失われるとします。)
このコードは特定のコンテンツで問題が発生しますか?
NSString *fileContents = [NSString stringWithContentsOfFile:path
encoding:NSUTF8StringEncoding
error:NULL];
NSScanner *scanner = [NSScanner scannerWithString:fileContents]
[scanner scanUpToString@"<DELIMITER>" intoString:nil];
// TODO: remove delimiter
NSString *desiredString;
[scanner scanUpToString:@"<DELIMITER2>" intoString:&desiredString];