Dela via


ZipArchiveEntry-namn och kommentarer respekterar UTF8-flaggan

En ZipArchive kan skapas med en Encoding parameter som används för att avkoda namn och kommentarer för poster i ZIP-arkivet. .NET 7 introducerade en regression där den här kodningen användes som standard, med en återställning till systemets standardkodsida (UTF8 i .NET Core) om ingen kodning angavs. Den här regressionen korrigeras i .NET 9: om postens allmänna bitflaggor anger att UTF8 ska användas, så respekteras detta. Om UTF8-bitarsflaggan inte har angetts används kodningen som tillhandahålls av användaren (med den befintliga återställningen till systemets standardkodsida om ingen anges.)

Tidigare beteende

Om en ZipArchive instansieras med en användardefinierad entryNameEncoding parameter i .NET 7 och .NET 8 användes alltid den här kodningen när namn och kommentarer för poster i ZIP-arkivet avkodades. entryNameEncoding användes även om posten hade bituppsättningen för att ange att dess namn och kommentar kodades i UTF8.

Nytt beteende

Från och med .NET 9, när en ZIP-arkivposts namn och kommentar avkodas, respekteras dess UTF8-bitarsflagga. Parametern som tillhandahålls av entryNameEncoding användaren används bara för att avkoda postens namn och kommentera om den här bitflaggan inte har angetts.

Version introducerad

.NET 9 RC 1

Typ av icke-bakåtkompatibel ändring

Den här ändringen är en beteendeförändring.

Orsak till ändringen

Den här ändringen korrigerar en regression i .NET 7 och .NET 8. Det återgår ZipArchive också till kompatibilitet med ZIP-filformatspecifikationen, avsnitten 4.4.4 och bilaga D.

Om koden skickar en kodning till ZipArchive-konstruktorn bör du vara medveten om att den här kodningen inte respekteras i alla situationer. Den används bara om postens UTF8-bit inte har angetts.

Om du använder ZipArchive för att parsa ZIP-poster med namn som är kodade i icke-UTF8-format (men som har UTF8-bitarsflaggan inställd) kommer du inte längre att kunna göra det. Det tidigare beteendet var en bugg.

Berörda API:er