Ho cercato su questo argomento e ho esaminato ogni risposta, ma ancora non la capisco.C# Convertire la stringa da UTF-8 a ISO-8859-1 (Latin1) H
Fondamentalmente ho bisogno di convertire stringa UTF-8 a ISO-8859-1 e lo faccio usando seguente codice:
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
string msg = iso.GetString(utf8.GetBytes(Message));
mia stringa di origine è
Message = "ÄäÖöÕõÜü"
Ma purtroppo la mia stringa risultato diventa
msg = "�ä�ö�õ�ü
Cosa sto facendo male qui?
Tutte le stringhe in .NET memorizzano internamente le stringhe utilizzando caratteri unicode. Non c'è alcuna idea che una stringa sia "windows-1252", "iso-8859-1", "utf-8", ecc. Stai cercando di gettare via qualsiasi carattere nella tua stringa che non ha una rappresentazione in Windows -1252 tabella codici? –
@IanBoyd In realtà, una [stringa] (https://msdn.microsoft.com/en-us/library/system.string (v = vs.110) .aspx) è una sequenza contata di unità di codice UTF-16. (Sfortunatamente, il termine Unicode è stato applicato in modo errato in 'Encoding.Unicode' e nell'API Win32. Unicode è un set di caratteri, non una codifica. UTF-16 è una delle diverse codifiche per Unicode.) –
L'azione non è corretta: crea array di byte nella codifica utf8, ma li legge con decodifica iso. Se vuoi creare string con simboli codificati chiama semplicemente ** string msg = iso.GetString (iso.GetBytes (Message)); ** – StuS