Aracılığıyla paylaş


ZipArchiveEntry adları ve açıklamaları UTF8 bayrağına uygun

, 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 .

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