У мене є рядок, який я отримую від стороннього додатка, і я хотів би правильно відобразити його будь-якою мовою за допомогою C # на моїй поверхні Windows.
Через неправильне кодування фрагмент моєї рядка виглядає так на іспанській мові:
Acción
тоді як це має виглядати так:
Acción
Відповідно до відповіді на це запитання: Як знати кодування рядків у C # , кодування, яке я отримую, повинно надходити вже на UTF-8, але воно читається на Encoding.Default (можливо, ANSI?).
Я намагаюся перетворити цю рядок у реальний UTF-8, але одна з проблем полягає в тому, що я бачу лише підмножину класу Encoding (лише властивості UTF8 та Unicode), ймовірно, тому, що я обмежений API поверхні Windows.
Я спробував кілька фрагментів, які знайшов в Інтернеті, але жоден з них поки що не виявився успішним для східних мов (тобто корейської). Один з таких прикладів:
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 системи.