2013-06-04 15 views
7

Il seguente codice viene utilizzato per leggere un file riga per riga.Leggere un file riga per riga con VB.NET

È solo una versione molto recente, quindi tutto ciò che voglio fare è visualizzare la stringa nella finestra immediata. Funziona bene, tranne che caratteri come Ä Ü Ö è à e così via sono sostituiti da un quadrato nero con un punto interrogativo. Secondo la documentazione, il lettore di file dovrebbe essere compatibile con i caratteri UTF-8, quindi non so cosa sia sbagliato.

... 

    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 

... 

Il file è codificato ANSI, non UTF-8, ma il lettore utilizza UTF-8.

+1

È necessario aprire il file per la lettura utilizzando la codifica corretta. Il sovraccarico ['File.ReadLines'] (http://msdn.microsoft.com/en-us/library/dd383357.aspx) che richiede un' Encoding' probabilmente si adatta meglio alle tue esigenze. – Oded

+0

e come lo farei? Non ho trovato alcun parametro per passare al file .. – user2452250

+1

Esplorate l'interfaccia 'File'. C'è più di un semplice 'File.OpenText' ... – Oded

risposta

4

Sostituito dichiarazione lettore con questo e ora funziona!

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

Encoding.Default rappresenta la tabella codici ANSI impostata nel Pannello di controllo di Windows.

6

piace questa ... ho usato per leggere i caratteri cinesi ...

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

grazie ma questo ha lo stesso problema del mio codice .. – user2452250

+0

@ user2452250: intendi messaggio di lettura errore? – matzone

+0

Non c'è My.Computer.FileSystem sul mio vb.net –

Problemi correlati