共用方式為


ZipArchiveEntry 名稱和註解遵循 UTF8 旗標

ZipArchive可以使用 Encoding 參數來建立,它是用來解碼 ZIP 封存中項目的名稱和註解。 .NET 7 引進了迴歸,其中預設會使用此解碼,如果未提供解碼,則會回退為系統預設程式碼頁 (.NET Core 中的 UTF8)。 .NET 9 中修正了此迴歸:如果該項目的一般用途位元旗標指出應該使用 UTF8,則會受到遵循。 如果未設定 UTF8 位元旗標,則會使用使用者提供的編碼 (如果沒有提供,則會使用現有的回退到系統預設程式碼頁。)

先前的行為

在 .NET 7 和 .NET 8 中,如果 ZipArchive 使用了使用者指定的 entryNameEncoding 參數具現化 ,則一律會在解碼 ZIP 封存中項目的名稱和註解時使用此編碼。 即使該項目已設定位元,仍會使用 entryNameEncoding 來表示其名稱和註解是以 UTF8 編碼。

新的行為

從 .NET 9 開始,當 ZIP 封存項目的名稱和註解被解碼時,會遵循其 UTF8 位元旗標。 使用者提供的 entryNameEncoding 參數只有在此位元旗標未設定時,才會用來解碼該項目的名稱和註解。

導入的版本

.NET 9 RC 1

中斷性變更的類型

此變更為行為變更

變更原因

這項變更會修正 .NET 7 和 .NET 8 中的迴歸。 它也會傳回 ZipArchive 以符合 ZIP 檔格式規格,第 4.4.4 節和附錄 D。

如果您的程式碼將編碼傳遞至 ZipArchive 建構函式,請注意,在所有情況下都不會遵循此編碼。 它只有在未設定該項目的 UTF8 位元時使用。

如果您使用 ZipArchive 剖析以非 UTF8 格式編碼之名稱的 ZIP 項目 (但已設定 UTF8 位元旗標),您將無法再這麼做。 先前的行為是錯誤。

受影響的 API