用文件名中的变音符号读取ZIP

时间:2014-07-08 09:41:13

标签: ios objective-c zip special-characters

使用code page 437对正确的ZIP进行编码。但是,iOS不支持此代码页。因此,我无法提取包含äöü等特殊字符的文件和文件夹的ZIP文件。

Objective-Zipzipzap将文件名转换为nil,这会使文件无法读取。 ZipKit至少将变音符号转换为问号。该文件可以访问,但它看起来仍然很奇怪。有没有办法在iOS中访问原始的CP473编码文件名?

2 个答案:

答案 0 :(得分:0)

嗯,这只是一个代码页。每个字节严格定义为1个字符,因此编写一个简单的函数将其逐字节转换为Unicode应该不难。所有代码点都列在您链接的维基百科页面上(例如0x81 == \ u00FC)。

答案 1 :(得分:0)

使用zipzap,您可以为文件名解释指定非UTF8编码。

在8.0 API中:

ZZArchive* archive = [[ZZArchive alloc]
  initWithURL:URL
      options:@{ ZZOpenOptionsEncodingKey:
                CFStringConvertEncodingToNSStringEncoding(
                  kCFStringEncodingDOSLatinUS) }
        error:nil];

在较旧的API中:

ZZArchive* archive = [[ZZArchive alloc]
  initWithContentsOfURL:URL
               encoding:CFStringConvertEncodingToNSStringEncoding(
                          kCFStringEncodingDOSLatinUS)];