J'ai une chaîne que je reçois d'une application tierce et je souhaite l'afficher correctement dans n'importe quelle langue en utilisant C # sur ma Surface Windows.
En raison d'un encodage incorrect, un morceau de ma chaîne ressemble à ceci en espagnol:
Acción
alors que cela devrait ressembler à ceci:
Acción
Selon la réponse à cette question: Comment connaître l'encodage de chaîne en C # , l'encodage que je reçois devrait déjà arriver sur UTF-8, mais il est lu sur Encoding.Default (probablement ANSI?).
J'essaie de transformer cette chaîne en véritable UTF-8, mais l'un des problèmes est que je ne peux voir qu'un sous-ensemble de la classe Encoding (propriétés UTF8 et Unicode uniquement), probablement parce que je suis limité à l'API de surface Windows.
J'ai essayé quelques extraits que j'ai trouvés sur Internet, mais aucun d'entre eux n'a réussi jusqu'à présent pour les langues orientales (c'est-à-dire le coréen). Un exemple est le suivant:
var utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(myString);
myString= utf8.GetString(utfBytes, 0, utfBytes.Length);
J'ai également essayé d'extraire la chaîne dans un tableau d'octets, puis d'utiliser 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);
Avez-vous d'autres idées que je pourrais essayer?
Encoding.Default
retourne la page de codes ANSI du système.