Mam ciąg, który otrzymałem z aplikacji innej firmy i chciałbym wyświetlić go poprawnie w dowolnym języku przy użyciu języka C # na moim Windows Surface.
Z powodu nieprawidłowego kodowania fragment mojego ciągu wygląda tak po hiszpańsku:
Acción
podczas gdy powinno to wyglądać tak:
Acción
Zgodnie z odpowiedzią na to pytanie: Jak poznać kodowanie ciągów w C # , kodowanie, które otrzymuję, powinno już pochodzić z UTF-8, ale jest odczytywane na Encoding.Default (prawdopodobnie ANSI?).
Próbuję przekształcić ten ciąg w prawdziwy UTF-8, ale jednym z problemów jest to, że widzę tylko podzbiór klasy Encoding (tylko właściwości UTF8 i Unicode), prawdopodobnie dlatego, że jestem ograniczony do interfejsu API powierzchni systemu Windows.
Wypróbowałem kilka fragmentów, które znalazłem w Internecie, ale żaden z nich nie okazał się jak dotąd skuteczny dla języków wschodnich (tj. Koreańskiego). Oto jeden przykład:
var utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(myString);
myString= utf8.GetString(utfBytes, 0, utfBytes.Length);
Próbowałem również wyodrębnić ciąg do tablicy bajtów, a następnie użyć 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);
Czy macie jakieś inne pomysły, które mógłbym wypróbować?
Encoding.Default
zwraca stronę kodową ANSI systemu.