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.
Yalnızca hatalı biçimlendirilmiş kodlanmış yükleri etkileyen küçük bir hataya neden olan değişiklik yapıldı.
.NET 9'un öncesinde, ile [0x01, 0xC2] ayrıştırılan yanlış biçimlendirilmiş kodlanmış bir dize BinaryReader.ReadString() boş bir dize döndürdü.
.NET 9'dan başlayarak bilinmeyen, BinaryReader.ReadString() tanınmayan veya tanınmayan bir karakteri değiştirmek için kullanılan "\uFFFD" REPLACEMENT CHARACTER döndürür. Bu değişiklik yalnızca hatalı biçimlendirilmiş yükleri etkiler ve Unicode standartlarıyla eşleşir.
Önceki davranış
var ms = new MemoryStream(new byte[] { 0x01, 0xC2 });
using (var br = new BinaryReader(ms))
{
string s = br.ReadString();
Console.WriteLine(s == "\uFFFD"); // false
Console.WriteLine(s.Length); // 0
}
Yeni davranış
.NET 9'dan başlayarak, kod açıklamalarında gösterildiği gibi aynı kod parçacığı ve s == "\uFFFD"için s.Length farklı sonuçlar üretir:
var ms = new MemoryStream(new byte[] { 0x01, 0xC2 });
using (var br = new BinaryReader(ms))
{
string s = br.ReadString();
Console.WriteLine(s == "\uFFFD"); // true
Console.WriteLine(s.Length); // 1
}
Sürüm kullanıma sunulmuştur
.NET 9 Önizleme 7
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, nadir bir senaryoya etki eden bir performans geliştirmesi olarak yapılmıştır.
Önerilen eylem
Dizenin sonunda eksik bayt dizisinin atlandığı önceki davranışı korumak istiyorsanız, sonucu çağırın TrimEnd("\uFFFD") .