Avatar ·

Cómo obtener una representación de bytes consistente de una cadena en C# sin especificar explícitamente la codificación

¡Hola! Soy un desarrollador principiante de C# y tengo un problema con la conversión de cadenas a bytes. Necesito enviar datos de cadena por la red y guardarlos en un archivo, pero noté que al leerlos de vuelta, los datos a veces difieren. Intenté usar `Encoding.Default`, pero en diferentes computadoras el resultado es diferente. Luego probé `Encoding.ASCII`, pero no admite letras rusas ni otros caracteres Unicode. Ahora hago esto: ```csharp string text = "Привет, мир!"; byte[] bytes = Encoding.UTF8.GetBytes(text); string restored = Encoding.UTF8.GetString(bytes); ``` Esto funciona, pero la pregunta es: ¿por qué siempre tengo que especificar explícitamente `Encoding.UTF8`? ¿Acaso .NET no puede determinar la codificación correcta por sí mismo? Después de todo, las cadenas en C# ya se almacenan en Unicode internamente. ¿Por qué no hay un método simple como `text.ToBytes()` o `text.GetBytes()`? En Stack Overflow vi una pregunta similar con un millón de visitas, pero allí aconsejan siempre especificar la codificación. Pero me parece que esto es incómodo y fácil de olv