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