2012-12-13 17 views
6

Sto leggendo un file (riga per riga) pieno di caratteri svedesi come ååö ma come posso leggere e salvare le stringhe con caratteri svedesi. Ecco il mio codice e sto usando la codifica UTF-8:Come leggere correttamente i caratteri svedesi da un file txt

TextReader tr = new StreamReader(@"c:\testfile.txt", System.Text.Encoding.UTF8, true); 
tr.ReadLine() //returns a string but Swedish characters are not appearing correctly... 
+0

Che cosa non funziona esattamente? – Jeroen

+0

la stringa restituita da 'tr.ReadLine()' non mostra i caratteri svedesi. – Geek

+0

Le stringhe C# sono sempre codificate in UTF-16. Passando la codifica UTF-8 alla tua lettura StreamReader, una riga restituisce un oggetto stringa UTF-16 correttamente codificato. Ora dipende solo da come viene emessa la stringa ... – CodeZombie

risposta

12

è necessario modificare lo System.Text.Encoding.UTF8 a System.Text.Encoding.GetEncoding (1252). Vedi sotto

 System.IO.TextReader tr = new System.IO.StreamReader(@"c:\testfile.txt", System.Text.Encoding.GetEncoding(1252), true); 
     tr.ReadLine(); //returns a string but Swedish characters are not appearing correctly 
+0

Eccellente! Grazie! – Geek

0

ho capito io stesso cioè System.Text.Encoding.Default sosterrà caratteri svedesi.

TextReader tr = new StreamReader(@"c:\testfile.txt", System.Text.Encoding.Default, true); 
+0

Perché hai impostato la codifica in ingresso su UTF-8 allora? – CodeZombie

+1

@Geek Sì se la lingua predefinita è per la lingua svedese, allora sì funzionerà. Se non vedi il mio post che ti dà la pagina di codice per questo. – Sorceri

+1

Non ha nulla a che fare con il supporto della lingua o dei caratteri, sia in UTF-8 che in CP1252 supportano la lingua svedese. Ha a che fare con la codifica del file, che è CP1252. Devi sempre conoscere la codifica (piuttosto che la lingua) del file per leggerlo correttamente. – Esailija

Problemi correlati