2012-12-13 15 views
6

Czytam plik (wiersz po wierszu) pełen szwedzkich znaków, takich jak äåö, ale jak mogę odczytać i zapisać ciągi znaków szwedzkich. Tu jest mój kodu i używam kodowanie UTF-8:Jak poprawnie odczytać szwedzkie znaki z pliku 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

Co nie działa dokładnie? – Jeroen

+0

ciąg zwracany przez 'tr.ReadLine()' nie wyświetla szwedzkich znaków. – Geek

+0

Ciągi C# są zawsze kodowane w UTF-16. Po przekazaniu kodowania UTF-8 do Twojego odczytu StreamReader, linia zwraca poprawnie zakodowany ciąg znaków UTF-16. To teraz zależy tylko od sposobu wyjścia Twojego ciąg ... – CodeZombie

Odpowiedz

12

Trzeba zmienić System.Text.Encoding.UTF8 do System.Text.Encoding.GetEncoding (1252). Zobacz poniżej:

 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

Doskonale! Dzięki! – Geek

0

wyobraziłem go sobie tj System.Text.Encoding.Default wesprze znaki szwedzkie.

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

Dlaczego ustawiłeś kodowanie wejścia na UTF-8? – CodeZombie

+1

@Geek Tak, jeśli domyślnym językiem jest szwedzki, to tak, będzie działać. Jeśli nie, zobacz mój post, który podaje stronę kodową. – Sorceri

+1

Nie ma to nic wspólnego z obsługą języka lub znaków, zarówno w języku szwedzkim, jak i w języku UTF-8 i CP1252. Ma to związek z kodowaniem pliku, którym jest CP1252. Zawsze musisz znać kodowanie (a nie język) pliku, aby go poprawnie odczytać. – Esailija

Powiązane problemy