2013-06-04 11 views
7

次のコードは、1行ずつファイルを読み取るために使用されます。VB.NETでファイルを1行ずつ読み取る

これはちょうど非常に早いバージョンなので、私がしたいのは、ストリングを直接ウィンドウに表示することです。 ÄÜÖèààなどの文字が疑問符の付いた黒い四角に置き換えられている点を除いて、正常に動作しています。ドキュメントによると、ファイルリーダーはUTF-8文字と互換性があるはずですので、何が間違っているのか分かりません。

... 

    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 

... 

このファイルは、UTF-8ではなくANSIでエンコードされていますが、リーダーはUTF-8を使用しています。このよう

+1

正しいエンコーディングを使用してファイルを読み取り用に開く必要があります。エンコードをとる['File.ReadLines'](http://msdn.microsoft.com/en-us/library/dd383357.aspx)のオーバーロードはおそらくあなたのニーズに合っています。 – Oded

+0

と私はそれをどのようにしますか?私はファイルに渡すためのパラメータを見つけませんでした。 – user2452250

+1

あなたは 'File'インタフェースを探検します。 'File.OpenText'以上のものがあります... – Oded

答えて

4

この1を読者宣言を置き換え、今それは働きます!

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

Encoding.Defaultは、Windowsのコントロールパネルで設定されたANSIコードページを表します。

6

...私は漢字を読むためにそれを使用し...

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

ありがとうございますが、これは私のコードと同じ問題があります。 – user2452250

+0

@ user2452250:文字を読み込む際にエラーが発生しますか? – matzone

+0

私のvb.netにMy.Computer.FileSystemはありません –

関連する問題