2012-12-13 14 views
6

Ich lese eine Zeile (Zeile für Zeile) voller schwedischer Zeichen wie äåö, aber wie kann ich die Strings mit schwedischen Zeichen lesen und speichern? Hier ist mein Code, und ich bin mit UTF8-Codierung:Wie liest man schwedische Zeichen richtig aus einer txt-Datei?

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

Was funktioniert nicht genau? – Jeroen

+0

Die von 'tr.ReadLine()' zurückgegebene Zeichenfolge zeigt keine schwedischen Zeichen an. – Geek

+0

C# -Strings sind immer UTF-16-codiert. Wenn Sie eine UTF-8-Codierung an Ihren StreamReader übergeben, wird beim Lesen einer Zeile ein ordnungsgemäß codiertes UTF-16-String-Objekt zurückgegeben. Es hängt nun nur, wie Sie die Ausgabe der Zeichenfolge ... – CodeZombie

Antwort

12

Sie müssen die System.Text.Encoding.UTF8 zu System.Text.Encoding.GetEncoding (1252) ändern. Siehe unten

 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

Ausgezeichnet! Vielen Dank! – Geek

0

ich es herausgefunden mich heißt System.Text.Encoding.Default schwedische Zeichen unterstützen.

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

Warum haben Sie die Eingangskodierung dann auf UTF-8 gesetzt? – CodeZombie

+1

@Geek Ja, wenn Ihre Standardsprache für die schwedische Sprache ist, dann wird es ja funktionieren. Wenn nicht, sehe meinen Beitrag, der Ihnen die Codepage dafür gibt. – Sorceri

+1

Es hat nichts mit der Unterstützung von Sprache oder Zeichen zu tun, sowohl UTF-8 als auch CP1252 unterstützen die schwedische Sprache. Es hat mit der Dateicodierung zu tun, die CP1252 ist. Sie müssen immer die Codierung (und nicht die Sprache) der Datei kennen, um sie richtig lesen zu können. – Esailija

Verwandte Themen