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.
Perubahan kecil yang melanggar diperkenalkan yang hanya memengaruhi payload yang dikodekan salah bentuk.
Sebelum .NET 9, string [0x01, 0xC2] yang dikodekan salah bentuk yang diurai dengan BinaryReader.ReadString() menampilkan string kosong.
Mulai dari .NET 9, BinaryReader.ReadString() mengembalikan "\uFFFD", yang merupakan REPLACEMENT CHARACTER yang digunakan untuk mengganti karakter yang tidak diketahui, tidak dikenal, atau tidak dapat diprediksi. Perubahan ini hanya memengaruhi payload yang salah format dan cocok dengan standar Unicode.
Perilaku sebelumnya
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
}
Perilaku yang baru
Mulai dari .NET 9, cuplikan kode yang sama menghasilkan hasil yang berbeda untuk s == "\uFFFD" dan s.Length, seperti yang ditunjukkan dalam komentar kode:
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
}
Versi yang diperkenalkan
Pratinjau .NET 9 7
Jenis perubahan yang melanggar
Perubahan ini adalah perubahan perilaku.
Alasan untuk berubah
Perubahan ini dilakukan sebagai peningkatan performa yang memengaruhi skenario langka.
Tindakan yang direkomendasikan
Jika Anda ingin menyimpan perilaku sebelumnya di mana urutan byte yang tidak lengkap dihilangkan di akhir string, panggil TrimEnd("\uFFFD") hasilnya.