Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
Se introdujo un cambio importante menor que solo afecta a las cargas codificadas con formato incorrecto.
Antes de .NET 9, una cadena codificada con formato incorrecto [0x01, 0xC2] que se analizaba con BinaryReader.ReadString() devolvía una cadena vacía.
A partir de .NET 9, BinaryReader.ReadString() devuelve "\uFFFD", que es el REPLACEMENT CHARACTER que se usa para reemplazar un carácter desconocido, no reconocido o no representativo. Este cambio solo afecta a las cargas con formato incorrecto y coincide con los estándares Unicode.
Comportamiento anterior
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
}
Comportamiento nuevo
A partir de .NET 9, el mismo fragmento de código genera resultados diferentes para s == "\uFFFD" y s.Length, como se muestra en los comentarios de código:
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ón introducida
.NET 9 (versión preliminar 7)
Tipo de cambio importante
Este es un cambio de funcionamiento.
Motivo del cambio
Este cambio se realizó como una mejora del rendimiento que afecta a un escenario poco frecuente.
Acción recomendada
Si desea mantener el comportamiento anterior en el que se omitió la secuencia de bytes incompleta al final de la cadena, llame a TrimEnd("\uFFFD") en el resultado.