У меня есть строка, которую я получаю из стороннего приложения, и я хотел бы правильно отобразить ее на любом языке, используя C #, на моей Windows Surface.
Из-за неправильной кодировки часть моей строки на испанском выглядит так:
Acción
тогда как это должно выглядеть так:
Acción
Согласно ответу на этот вопрос: Как узнать кодировку строк в C # , кодировка, которую я получаю, должна уже поступать в UTF-8, но она читается в Encoding.Default (возможно, ANSI?).
Я пытаюсь преобразовать эту строку в настоящий UTF-8, но одна из проблем заключается в том, что я могу видеть только подмножество класса Encoding (только свойства UTF8 и Unicode), вероятно, потому, что я ограничен интерфейсом Windows Surface.
Я попробовал некоторые фрагменты, которые я нашел в Интернете, но ни один из них не оказался успешным для восточных языков (например, корейский). Один пример выглядит следующим образом:
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);
Ребята, у вас есть другие идеи, которые я мог бы попробовать?
Encoding.Default
возвращает системную кодовую страницу ANSI.