A ZipArchiveEntry nevei és megjegyzései tiszteletben tartják az UTF8 jelzőt

Létrehozható ZipArchive egy Encoding paraméterrel, amely a ZIP-archívum bejegyzéseinek nevének és megjegyzéseinek dekódolására szolgál. A .NET 7 bevezetett egy regressziót, ahol ezt a kódolást alapértelmezés szerint használták, a rendszer alapértelmezett kódlapjára (UTF8 a .NET Core-ban) való visszalépéssel, ha nem adott meg kódolást. Ez a regresszió a .NET 9-ben van javítva: ha a bejegyzés általános célú bitjelzői azt jelzik, hogy UTF8-at kell használni, akkor az tiszteletben van tartva. Ha az UTF8 bitjelző nincs beállítva, a rendszer a felhasználó által megadott kódolást használja (ha nincs megadva, a rendszer alapértelmezett kódlapjára való visszalépéssel).)

Előző viselkedés

A .NET 7 és a .NET 8 rendszerben, ha egy ZipArchive felhasználó által megadott entryNameEncoding paraméterrel példányosított egy példányt, ez a kódolás mindig ezt a kódolást használta a ZIP-archívum bejegyzéseinek neveinek és megjegyzéseinek dekódolásakor. entryNameEncoding akkor is használták, ha a bejegyzés bitkészlete azt jelzi, hogy a neve és a megjegyzése UTF8-ban van kódolva.

Új viselkedés

A .NET 9-től kezdve, amikor egy ZIP-archívum bejegyzésének neve és megjegyzése dekódolva van, a rendszer tiszteletben tartja az UTF8 bitjelzőjét. A felhasználó által megadott entryNameEncoding paraméter csak a bejegyzés nevének és megjegyzésének dekódolására szolgál, ha ez a bitjelző nincs megadva.

Bevezetett verzió

.NET 9 RC 1

A kompatibilitástörő változás típusa

Ez a változás viselkedésbeli változás.

A változás oka

Ez a módosítás kijavít egy regressziót a .NET 7-ben és a .NET 8-ban. ZipArchive Visszatér a ZIP-fájlformátum specifikációjának, a 4.4.4.

Ha a kód átad egy kódolást a ZipArchive konstruktornak, vegye figyelembe, hogy ezt a kódolást nem minden esetben tartják be. Csak akkor használható, ha a bejegyzés UTF8-bitje nincs beállítva.

Ha nem UTF8 formátumú (de UTF8 bites jelölőkészlettel rendelkező) névvel rendelkező ZIP-bejegyzéseket szeretne ZipArchive elemezni, ezt a továbbiakban nem fogja tudni elvégezni. Az előző viselkedés hiba volt.

Érintett API-k