我有一個包含混合二進制和UTF-8編碼數據的文件。當二進制數據解碼爲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 [email protected]"<DELIMITER>" intoString:nil];
// TODO: remove delimiter
NSString *desiredString;
[scanner scanUpToString:@"<DELIMITER2>" intoString:&desiredString];