Ho una stringa che ricevo da un'app di terze parti e vorrei visualizzarla correttamente in qualsiasi lingua usando C # sul mio Windows Surface.
A causa di una codifica errata, un pezzo della mia stringa appare così in spagnolo:
Acción
mentre dovrebbe apparire così:
acción
Secondo la risposta a questa domanda: Come sapere la codifica di stringa in C # , la codifica che sto ricevendo dovrebbe essere già in UTF-8, ma è letta su Encoding.Default (probabilmente ANSI?).
Sto cercando di trasformare questa stringa in reale UTF-8, ma uno dei problemi è che riesco a vedere solo un sottoinsieme della classe Encoding (solo proprietà UTF8 e Unicode), probabilmente perché sono limitato all'API di Windows Surface.
Ho provato alcuni frammenti che ho trovato su Internet, ma nessuno di questi ha finora avuto successo per le lingue orientali (ad esempio il coreano). Un esempio è il seguente:
var utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(myString);
myString= utf8.GetString(utfBytes, 0, utfBytes.Length);
Ho anche provato a estrarre la stringa in una matrice di byte e quindi usando 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);
Ragazzi avete altre idee che potrei provare?
Encoding.Default
restituiscono la tabella codici ANSI del sistema.