【问题标题】:Objc-DataFile-Unreadable Substring-Unknown to any encodingObjc-DataFile-Unreadable Substring-Unknown to any encoding
【发布时间】:2015-09-22 14:02:44
【问题描述】:

我有一个由附属应用程序构建的数据文件。我需要找到数据文件中包含的一些子字符串。它们可以通过分隔它们的字符符号来识别。例如:*!substringqSxt。子字符串因项目而异,因此我需要找到分隔它们的符号以读取以下子字符串。我还将文件打印为不同的编码,尝试使用哪种编码并匹配原始数据文件。发现是MacOsRomanStringEncoding

我使用NSRange:rangOfString来定位分隔符号。这是我的代码:

char *debutAudio ="jjbj";
char *finAudio ="qSxt";

NSString *debutAudioConverted = [[NSString alloc]
                                 initWithCString: debutAudio
                                 encoding:NSMacOSRomanStringEncoding];
NSString *finAudioConverted = [[NSString alloc]
                               initWithCString: finAudio
                               encoding:NSMacOSRomanStringEncoding];


NSRange debutaudioRange =[dataFileContent rangeOfString:debutAudioConverted];
NSRange finaudioRange =[dataFileContent rangeOfString:finAudioConverted];


NSLog(@"range is %@",NSStringFromRange(debutaudioRange));
NSLog(@"range is %@",NSStringFromRange(finaudioRange));

NSLog 的返回范围均为 {9223372036854775807, 0} 所以不要在那里定位分隔字符串。

如果我要求查找文件中包含的其他字符串,例如“设置”,rangeOfString 将返回正确的位置和长度。

我认为该文件可能包含多种编码,并尝试使用 initWithCString 转换为任何可能的编码,但没有任何作用。

另外,如果我在文本编辑中打开文件并使用“查找”功能,它不会找到分隔字符串,但会找到其他单词。我的胆量告诉我它的相关性。我不知道在哪里寻找信息。可以保护文件吗,不过我正在阅读它的副本。

【问题讨论】:

  • 有什么要避免使用数据库的,嗯?
  • 很遗憾没有......如果无法识别字符串,那么我可能会放弃该项目。

标签: objective-c substring data-files protected-resource


【解决方案1】:

我发现这里发生的问题。正确的编码仍然是 MacOsRoman。问题是前缀字符串*debutAudio "jjbj"实际上有一个很小的空格,例如每个字符之间的四分之一空格。我已经尝试了这里列出的每个 unicode 空间:https://www.cs.tut.fi/~jkorpela/chars/spaces.html#adj 没有任何成功。现在我将尝试在 MacOsRoman 下找到一半或四分之一的空间,看看这是否有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-22
    • 2016-04-22
    • 2023-02-15
    • 2022-12-27
    • 2020-03-03
    • 1970-01-01
    • 2016-09-20
    • 2022-12-26
    相关资源
    最近更新 更多