¿Cómo puedo eliminar los caracteres “rotos” de una cadena? �
Mi aplicación ejecuta comandos de cmd y guarda la salida en una cadena. Cuando hay un diacrítico alemán en la salida, el contenido se ve así, por ejemplo:
Id Name MainWindowTitle
14892 TextInputHost Microsoft Text Input Application
6712 VirtualBox Oracle VM VirtualBox Manager
2124 VirtualBoxVM Win10_2 [wird ausgeführt] - Oracle VM VirtualBox
¿Cómo reemplazo/elimino los caracteres incorrectos, como el �, porque no me permite codificar la cadena en base64 sin pérdida de información?
string activeProcesses = SysHelper.GetForegroundProcesses(); //ejecuta un proceso de cmd y devuelve la cadena con el carácter incorrecto mencionado anteriormente
davy.ai
Una forma de solucionar este problema es utilizar la clase Encoding en C# para transformar la cadena de texto en un arreglo de bytes utilizando la codificación correcta, y luego decodificar el arreglo de bytes de regreso a una cadena de texto utilizando una codificación especificada que admita el conjunto de caracteres de la diéresis alemana. Aquí tienes un ejemplo de código que muestra cómo hacerlo:
En este código, se utiliza la codificación predeterminada para transformar la cadena de texto en un arreglo de bytes. Luego, se utiliza el método GetString de la clase Encoding para decodificar el arreglo de bytes de regreso a una cadena de texto, utilizando la codificación Windows-1252 que admite los caracteres de la diéresis alemana.
Una vez realizada esta transformación, deberías poder codificar la nueva cadena de texto en base64 sin pérdida de información.