Tenho uma sequência que recebo de um aplicativo de terceiros e gostaria de exibi-la corretamente em qualquer idioma usando C # no Windows Surface.
Devido à codificação incorreta, um pedaço da minha string fica assim em espanhol:
Acción
considerando que deve ficar assim:
Acción
De acordo com a resposta desta pergunta: Como saber a codificação de string em C # , a codificação que estou recebendo já deve estar no UTF-8, mas é lida em Encoding.Default (provavelmente ANSI?).
Estou tentando transformar essa string em UTF-8 real, mas um dos problemas é que só consigo ver um subconjunto da classe Encoding (somente propriedades UTF8 e Unicode), provavelmente porque estou limitado à API de superfície do Windows.
Eu tentei alguns trechos que encontrei na internet, mas nenhum deles foi bem-sucedido até agora para os idiomas do leste (ou seja, coreano). Um exemplo é o seguinte:
var utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(myString);
myString= utf8.GetString(utfBytes, 0, utfBytes.Length);
Eu também tentei extrair a string em uma matriz de bytes e, em seguida, usar 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);
Vocês têm outras idéias que eu poderia tentar?
Encoding.Default
retornam a página de código ANSI do sistema.