From 2dd49560976f37f10c0c40199309f96c1ad23dbc Mon Sep 17 00:00:00 2001 From: Sushma Shivakumar Date: Mon, 13 Feb 2017 16:20:25 +0530 Subject: [PATCH] Japanese file name garbled --- ZipZap/ZZOldArchiveEntry.mm | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/ZipZap/ZZOldArchiveEntry.mm b/ZipZap/ZZOldArchiveEntry.mm index 18ae2ff6..1b1820ce 100644 --- a/ZipZap/ZZOldArchiveEntry.mm +++ b/ZipZap/ZZOldArchiveEntry.mm @@ -250,9 +250,19 @@ - (BOOL)check:(out NSError**)error - (NSString*)fileNameWithEncoding:(NSStringEncoding)encoding { - return [[NSString alloc] initWithBytes:_centralFileHeader->fileName() + + NSString *encodedString = nil; + + if (encoding == CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingDOSLatinUS)) { + BOOL lossyConversion = NO; + NSData *data = [NSData dataWithBytesNoCopy:_centralFileHeader->fileName() length:_centralFileHeader->fileNameLength freeWhenDone:NO]; + [NSString stringEncodingForData:data encodingOptions:nil convertedString:&encodedString usedLossyConversion:&lossyConversion]; + } else { + encodedString = [[NSString alloc] initWithBytes:_centralFileHeader->fileName() length:_centralFileHeader->fileNameLength encoding:encoding]; + } + return encodedString; } - (BOOL)checkEncryptionAndCompression:(out NSError**)error