J'ai cherché sur Google ce sujet et j'ai examiné toutes les réponses, mais je ne comprends toujours pas.
Fondamentalement, je dois convertir la chaîne UTF-8 en ISO-8859-1 et je le fais en utilisant le code suivant:
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
string msg = iso.GetString(utf8.GetBytes(Message));
Ma chaîne source est
Message = "ÄäÖöÕõÜü"
Mais malheureusement, ma chaîne de résultat devient
msg = "�ä�ö�õ�ü
Qu'est-ce que je fais de mal ici?
Encoding.Unicode
et dans l'API Win32. Unicode est un jeu de caractères, pas un encodage. UTF-16 est l'un des nombreux encodages pour Unicode.)
Message
été décodé à partir de l'UTF-8. En supposant que cette partie fonctionne correctement, la conversion en Latin-1 est aussi simple que byte[] bytes = Encoding.GetEncoding("ISO-8859-1").GetBytes(Message)
. Ensuite, comme le dit StuS, vous pouvez reconvertir les octets Latin-1 en UTF-16 avecEncoding.GetEncoding("ISO-8859-1").GetString(bytes)