Bagikan melalui


Nama dan komentar ZipArchiveEntry menghormati bendera UTF8

ZipArchive dapat dibuat dengan Encoding parameter, yang digunakan untuk mendekode nama dan komentar entri dalam arsip ZIP. .NET 7 memperkenalkan regresi di mana pengodean ini digunakan secara default, dengan fallback ke halaman kode default sistem (UTF8 di .NET Core) jika tidak ada pengodean yang disediakan. Regresi ini dikoreksi dalam .NET 9: jika bendera bit tujuan umum entri menunjukkan bahwa UTF8 harus digunakan, itu dihormati. Jika bendera bit UTF8 tidak diatur, pengodean yang disediakan pengguna digunakan (dengan fallback yang ada ke halaman kode default sistem jika tidak ada yang disediakan.)

Perilaku sebelumnya

Di .NET 7 dan .NET 8, jika ZipArchive dibuat dengan parameter yang ditentukan entryNameEncoding pengguna, pengodean ini selalu digunakan saat mendekode nama dan komentar entri dalam arsip ZIP. entryNameEncoding digunakan bahkan jika entri memiliki bit yang ditetapkan untuk menandakan bahwa nama dan komentarnya dikodekan dalam UTF8.

Perilaku yang baru

Mulai dari .NET 9, ketika nama dan komentar entri arsip ZIP didekodekan, bendera bit UTF8-nya dihormati. Parameter yang disediakan entryNameEncoding pengguna hanya digunakan untuk mendekode nama entri dan berkomentar jika bendera bit ini tidak diatur.

Versi yang diperkenalkan

.NET 9 RC 1

Jenis perubahan yang melanggar

Perubahan ini adalah perubahan perilaku.

Alasan untuk berubah

Perubahan ini mengoreksi regresi di .NET 7 dan .NET 8. Ini juga kembali ZipArchive ke kepatuhan dengan spesifikasi format file ZIP, bagian 4.4.4 dan lampiran D.

Jika kode Anda meneruskan pengodean ke konstruktor ZipArchive, ketahuilah bahwa pengodean ini tidak dihormati dalam semua situasi. Ini hanya akan digunakan jika bit UTF8 entri tidak diatur.

Jika Anda menggunakan ZipArchive untuk mengurai entri ZIP dengan nama yang dikodekan dalam format non-UTF8 (tetapi yang memiliki set bendera bit UTF8), Anda tidak akan lagi dapat melakukannya. Perilaku sebelumnya adalah bug.

API yang Terpengaruh