Ich habe eine Zeichenfolge, die ich von einer Drittanbieter-App erhalte, und möchte sie in jeder Sprache mit C # auf meiner Windows-Oberfläche korrekt anzeigen.
Aufgrund der falschen Codierung sieht ein Teil meiner Zeichenfolge auf Spanisch folgendermaßen aus:
Acción
während es so aussehen sollte:
Acción
Gemäß der Antwort auf diese Frage: Wie man die Zeichenfolgencodierung in C # kennt , sollte die Codierung, die ich erhalte, bereits auf UTF-8 verfügbar sein, sie wird jedoch auf Encoding.Default (wahrscheinlich ANSI?) Gelesen.
Ich versuche, diese Zeichenfolge in echtes UTF-8 umzuwandeln, aber eines der Probleme besteht darin, dass ich nur eine Teilmenge der Encoding-Klasse sehen kann (nur UTF8- und Unicode-Eigenschaften), wahrscheinlich weil ich auf die Windows-Oberflächen-API beschränkt bin.
Ich habe einige Schnipsel ausprobiert, die ich im Internet gefunden habe, aber keines davon hat sich bisher für östliche Sprachen (dh Koreanisch) als erfolgreich erwiesen. Ein Beispiel ist wie folgt:
var utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(myString);
myString= utf8.GetString(utfBytes, 0, utfBytes.Length);
Ich habe auch versucht, die Zeichenfolge in ein Byte-Array zu extrahieren und dann UTF8.GetString zu verwenden:
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);
Habt ihr noch andere Ideen, die ich ausprobieren könnte?
Encoding.Default
die ANSI-Codepage des Systems zurück.