我有一个包含混合二进制和 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];