Busqué en Google sobre este tema y miré todas las respuestas, pero todavía no lo entiendo.
Básicamente, necesito convertir la cadena UTF-8 a ISO-8859-1 y lo hago usando el siguiente código:
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
string msg = iso.GetString(utf8.GetBytes(Message));
Mi cadena de origen es
Message = "ÄäÖöÕõÜü"
Pero desafortunadamente mi cadena de resultados se convierte en
msg = "�ä�ö�õ�ü
¿Qué estoy haciendo mal aquí?
Encoding.Unicode
la API de Win32. Unicode es un conjunto de caracteres, no una codificación. UTF-16 es una de varias codificaciones para Unicode).
Message
fue decodificado de UTF-8. Suponiendo que esa parte funcionó correctamente, convertir a Latin-1 es tan simple como byte[] bytes = Encoding.GetEncoding("ISO-8859-1").GetBytes(Message)
. Luego, como dice StuS, puede convertir los bytes Latin-1 nuevamente a UTF-16 conEncoding.GetEncoding("ISO-8859-1").GetString(bytes)