Eu pesquisei sobre esse assunto no Google e olhei todas as respostas, mas ainda não entendi.
Basicamente, preciso converter a string UTF-8 em ISO-8859-1 e faço isso usando o seguinte código:
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
string msg = iso.GetString(utf8.GetBytes(Message));
Minha string fonte é
Message = "ÄäÖöÕõÜü"
Mas, infelizmente, minha string de resultado se torna
msg = "�ä�ö�õ�ü
O que estou fazendo de errado aqui?
Encoding.Unicode
API Win32. Unicode é um conjunto de caracteres, não uma codificação. UTF-16 é uma das várias codificações para Unicode.)
Message
foi decodificado de UTF-8. Assumindo que essa parte funcionou corretamente, a conversão para o Latin-1 é tão simples quanto byte[] bytes = Encoding.GetEncoding("ISO-8859-1").GetBytes(Message)
. Então, como StuS diz, você pode converter os bytes Latin-1 de volta para UTF-16 comEncoding.GetEncoding("ISO-8859-1").GetString(bytes)