Merge pull request #696 from stakira/master

Ignores UnicodePathExtra if forced encoding is specified
This commit is contained in:
Adam Hathcock
2022-09-15 10:16:18 +01:00
committed by GitHub
4 changed files with 34 additions and 2 deletions

View File

@@ -55,7 +55,7 @@ namespace SharpCompress.Common.Zip.Headers
LoadExtra(extra);
var unicodePathExtra = Extra.FirstOrDefault(u => u.Type == ExtraDataType.UnicodePathExtraField);
if (unicodePathExtra != null)
if (unicodePathExtra != null && ArchiveEncoding.Forced == null)
{
Name = ((ExtraUnicodePathExtraField)unicodePathExtra).UnicodeName;
}

View File

@@ -45,7 +45,7 @@ namespace SharpCompress.Common.Zip.Headers
LoadExtra(extra);
var unicodePathExtra = Extra.FirstOrDefault(u => u.Type == ExtraDataType.UnicodePathExtraField);
if (unicodePathExtra != null)
if (unicodePathExtra != null && ArchiveEncoding.Forced == null)
{
Name = ((ExtraUnicodePathExtraField)unicodePathExtra).UnicodeName;
}

View File

@@ -754,5 +754,37 @@ namespace SharpCompress.Test.Zip
Assert.Equal(4, x);
}
}
[Fact]
public void Zip_Forced_Ignores_UnicodePathExtra()
{
var zipPath = Path.Combine(TEST_ARCHIVES_PATH, "Zip.UnicodePathExtra.zip");
using (var stream = File.Open(zipPath, FileMode.Open, FileAccess.Read))
{
IArchive archive = ArchiveFactory.Open(stream, new ReaderOptions
{
ArchiveEncoding = new ArchiveEncoding
{
Default = Encoding.GetEncoding("shift_jis"),
}
});
IReader reader = archive.ExtractAllEntries();
reader.MoveToNextEntry();
Assert.Equal("궖귛궖귙귪궖귗귪궖귙_wav.frq", reader.Entry.Key);
}
using (var stream = File.Open(zipPath, FileMode.Open, FileAccess.Read))
{
IArchive archive = ArchiveFactory.Open(stream, new ReaderOptions
{
ArchiveEncoding = new ArchiveEncoding
{
Forced = Encoding.GetEncoding("shift_jis"),
}
});
IReader reader = archive.ExtractAllEntries();
reader.MoveToNextEntry();
Assert.Equal("きょきゅんきゃんきゅ_wav.frq", reader.Entry.Key);
}
}
}
}

Binary file not shown.