使用code page 437对正确的ZIP进行编码。但是,iOS不支持此代码页。因此,我无法提取包含ä
,ö
或ü
等特殊字符的文件和文件夹的ZIP文件。
Objective-Zip和zipzap将文件名转换为nil
,这会使文件无法读取。 ZipKit至少将变音符号转换为问号。该文件可以访问,但它看起来仍然很奇怪。有没有办法在iOS中访问原始的CP473编码文件名?
答案 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)];