es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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
Tags:  , ,

Answer

  1. Avatar for 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:

    byte[] bytes = Encoding.Default.GetBytes(activeProcesses); // transforma la cadena de texto en un arreglo de bytes utilizando la codificación predeterminada
    string cleanString = Encoding.GetEncoding(1252).GetString(bytes); // decodifica el arreglo de bytes de regreso a una cadena de texto utilizando la codificación Windows-1252
    

    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.

Comments are closed.