2013-06-04 4 views
7

Poniższy kod służy do odczytu pliku wiersz po wierszu.Odczytywanie pliku wiersz po wierszu za pomocą VB.NET

To tylko bardzo wczesna wersja, więc wszystko, co chcę zrobić, to wyświetlić ciąg w bezpośrednim oknie. Działa to dobrze, z wyjątkiem tego, że znaki takie jak Ę Ü Ö è and i tak dalej są zamieniane na czarny kwadrat ze znakiem zapytania. Zgodnie z dokumentacją czytnik plików powinien być zgodny z kodami UTF-8, więc nie wiem, co jest nie tak.

... 

    Dim reader = File.OpenText(filetoimport.Text) 

    Dim line As String = Nothing 

    Dim lines As Integer = 0 

    While (reader.Peek() <> -1) 
     line = reader.ReadLine() 
     If line.StartsWith("<item key=""") Then 
      Dim Firstpart As String = Nothing 

      Firstpart = line.Substring(11, line.IndexOf(""" value=") - 11) 

      Debug.WriteLine(Firstpart) 

      lines = lines + 1 

      Label3.Text = lines 
      Application.DoEvents() 
     Else 
      Label3.Text = lines 
      Application.DoEvents() 
     End If 

    End While 

... 

Plik jest kodowany ANSI, nie UTF-8, ale czytnik używa UTF-8.

+1

Musisz otworzyć plik do odczytu przy użyciu odpowiedniego kodowania. Przeciążenie ['File.ReadLines'] (http://msdn.microsoft.com/en-us/library/dd383357.aspx) wymagające" kodowania "prawdopodobnie lepiej odpowiada Twoim potrzebom. – Oded

+0

i jak bym to zrobił? nie znalazłem żadnych parametrów do przekazania do pliku. – user2452250

+1

Eksplorujesz interfejs 'Plik'. Jest coś więcej niż tylko "File.OpenText' ... – Oded

Odpowiedz

4

Zastąpiony deklarację czytnika z tego i teraz to działa!

Dim reader As New StreamReader(filetoimport.Text, Encoding.Default) 

Kodowanie.Default reprezentuje stronę kodową ANSI ustawioną w Panelu sterowania systemu Windows.

6

tak ... użyłem go do czytania znaków chińskich ...

Dim reader as StreamReader = My.Computer.FileSystem.OpenTextFileReader(filetoimport.Text) 
Dim a as String 

Do 
    a = reader.ReadLine 
    ' 
    ' Code here 
    ' 
Loop Until a Is Nothing 

reader.Close() 
+0

dziękuję, ale to ma ten sam problem, co mój kod. – user2452250

+0

@ user2452250: masz na myśli czytanie z błędem? – matzone

+0

Na moim vb.net nie ma My.Computer.FileSystem –