Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
, ZipArchive ZIP arşivindeki girdilerin adlarını ve açıklamalarını çözmek için kullanılan bir Encoding parametreyle oluşturulabilir. .NET 7, kodlama sağlanmazsa sistem varsayılan kod sayfasına (.NET Core'da UTF8) bir geri dönüşle bu kodlamanın varsayılan olarak kullanıldığı bir regresyon getirmektedir. Bu regresyon .NET 9'da düzeltilir: girişin genel amaçlı bit bayrakları UTF8 kullanılması gerektiğini gösteriyorsa, buna uyulur. UTF8 bit bayrağı ayarlanmazsa, kullanıcı tarafından sağlanan kodlama kullanılır (yoksa sistem varsayılan kod sayfasına geri dönüş mevcut olur.)
Önceki davranış
.NET 7 ve .NET 8'de, kullanıcı tarafından belirtilen ZipArchive bir parametreyle örneği oluşturulduysaentryNameEncoding, zip arşivindeki girdilerin adları ve açıklamaları çözülünce bu kodlama her zaman kullanılırdı.
entryNameEncoding girdisinin adının ve açıklamasının UTF8'de kodlandığını belirten bit ayarlanmış olsa bile kullanılmıştır.
Yeni davranış
.NET 9'dan başlayarak, zip arşiv girdisi adı ve açıklaması çözülünce UTF8 bit bayrağına uyulur. Kullanıcı tarafından sağlanan entryNameEncoding parametre yalnızca bu bit bayrağı ayarlanmamışsa girdinin adını ve açıklamasının kodunu çözmek için kullanılır.
Sürüm kullanıma sunulmuştur
.NET 9 RC 1
Hataya neden olan değişikliğin türü
Bu değişiklik davranışsal bir değişikliktir.
Değişiklik nedeni
Bu değişiklik .NET 7 ve .NET 8'de bir regresyonu düzeltmektedir. Ayrıca ZIP dosya biçimi belirtimi, bölüm 4.4.4 ve ek D ile uyumluluğu döndürür ZipArchive .
Önerilen eylem
Kodunuz ZipArchive oluşturucuya bir kodlama geçirirse, bu kodlamaya her durumda uyulmadığını unutmayın. Yalnızca girdinin UTF8 biti ayarlanmadıysa kullanılır.
ZIP girişlerini UTF8 olmayan biçimde kodlanmış (ancak UTF8 bit bayrağı ayarlanmış olan) ayrıştırmak için kullanıyorsanız ZipArchive , bunu artık yapamazsınız. Önceki davranış bir hataydı.
Etkilenen API’ler
- 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)