Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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.
Tindakan yang direkomendasikan
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
- ZipArchive(Stream, ZipArchiveMode, Boolean, Encoding)
- System.IO.Compression.ZipFile.ExtractToDirectory(Stream, String, Encoding, Boolean)
- System.IO.Compression.ZipFile.ExtractToDirectory(String, String, Encoding, Boolean)
- System.IO.Compression.ZipFile.ExtractToDirectory(String, String, Encoding)
- System.IO.Compression.ZipFile.ExtractToDirectory(Stream, String, Encoding)
- System.IO.Compression.ZipFile.Open(String, ZipArchiveMode, Encoding)