Tengo una cadena que recibo de una aplicación de terceros y me gustaría mostrarla correctamente en cualquier idioma usando C # en mi Windows Surface.
Debido a una codificación incorrecta, una parte de mi cadena se ve así en español:
Acción
mientras que debería verse así:
Acción
De acuerdo con la respuesta a esta pregunta: Cómo saber la codificación de cadenas en C # , la codificación que estoy recibiendo ya debería estar en UTF-8, pero se lee en Codificación. Predeterminado (¿probablemente ANSI?).
Estoy tratando de transformar esta cadena en UTF-8 real, pero uno de los problemas es que solo puedo ver un subconjunto de la clase de codificación (solo propiedades UTF8 y Unicode), probablemente porque estoy limitado a la API de superficie de Windows.
He probado algunos fragmentos que he encontrado en Internet, pero ninguno de ellos ha tenido éxito hasta ahora para los idiomas orientales (es decir, coreano). Un ejemplo es el siguiente:
var utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(myString);
myString= utf8.GetString(utfBytes, 0, utfBytes.Length);
También intenté extraer la cadena en una matriz de bytes y luego usar UTF8.GetString:
byte[] myByteArray = new byte[myString.Length];
for (int ix = 0; ix < myString.Length; ++ix)
{
char ch = myString[ix];
myByteArray[ix] = (byte) ch;
}
myString = Encoding.UTF8.GetString(myByteArray, 0, myString.Length);
¿Ustedes tienen alguna otra idea que pueda probar?
Encoding.Default
devuelve la página de códigos ANSI del sistema.