У меня есть строка, которую я получаю от стороннего приложения, и я хотел бы правильно ее отображать на любом языке, используя С# на моей Windows-поверхности.
Из-за неправильной кодировки часть моей строки выглядит по-испански:
Acción
тогда как это должно выглядеть так:
Acción
В соответствии с ответом на этот вопрос: Как узнать строковое кодирование в С#, кодировка, которую я получаю, должна поступать уже на UTF-8, но она читается на Encoding.Default(возможно, ANSI?).
Я пытаюсь преобразовать эту строку в настоящий UTF-8, но одна из проблем заключается в том, что я могу видеть только подмножество класса Encoding (только для свойств UTF8 и Unicode), вероятно, потому, что я ограничен окнами API поверхности.
Я пробовал некоторые фрагменты, которые я нашел в Интернете, но ни один из них пока не доказал свою эффективность для восточных языков (например, корейский). Один из примеров:
var utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(myString);
myString= utf8.GetString(utfBytes, 0, utfBytes.Length);
Я также попытался извлечь строку в массив байтов, а затем использовать 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);
У вас есть другие идеи, которые я мог бы попробовать?