Názvy zipArchiveEntry a komentáře respektují příznak UTF8

Lze ZipArchive vytvořit pomocí parametru Encoding , který slouží k dekódování názvů a komentářů položek v archivu ZIP. .NET 7 zavedl regresi, ve které bylo toto kódování ve výchozím nastavení použito, a pokud nebylo zadáno žádné kódování, na výchozí znakovou stránku systému (UTF8 v .NET Core). Tato regrese je opravena v rozhraní .NET 9: pokud příznaky bitů pro obecné účely položky označují, že se má použít UTF8, který se respektuje. Pokud není nastavený příznak UTF8, použije se kódování zadané uživatelem (s existující náhradní stránkou na výchozí znakovou stránku systému, pokud není zadán žádný).)

Předchozí chování

V .NET 7 a .NET 8, pokud ZipArchive byla vytvořena instance s uživatelem zadaný entryNameEncoding parametr, toto kódování se vždy použilo při dekódování názvů a komentářů položek v archivu ZIP. entryNameEncoding byla použita i v případě, že položka měla bitovou sadu, aby značila, že jeho název a komentář byly kódovány v UTF8.

Nové chování

Od verze .NET 9 se respektuje název a komentář položky archivu ZIP. Parametr zadaný entryNameEncoding uživatelem se používá pouze k dekódování názvu a komentáře položky, pokud tento příznak bitu není nastavený.

Zavedená verze

.NET 9 RC 1

Typ zásadní změny

Tato změna je změna chování.

Důvod změny

Tato změna opraví regresi v .NET 7 a .NET 8. Vrátí ZipArchive se také do souladu se specifikací formátu souboru ZIP, oddíly 4.4.4 a příloha D.

Pokud kód předá kódování konstruktoru ZipArchive, mějte na paměti, že toto kódování není ve všech situacích respektováno. Použije se pouze v případě, že není nastavená bit UTF8 položky.

Pokud používáte ZipArchive k analýze položek ZIP s názvy zakódovanými ve formátu jiného než UTF8 (ale které mají nastavenou bitovou vlajku UTF8), nebudete to už moct udělat. Předchozí chování bylo chybou.

Ovlivněná rozhraní API