2013-06-04 44 views
7

Mã sau được sử dụng để đọc từng dòng tệp.Đọc một dòng tệp theo dòng VB.NET

Đây chỉ là phiên bản rất sớm, vì vậy tất cả những gì tôi muốn làm là hiển thị chuỗi trong cửa sổ ngay lập tức. Nó hoạt động tốt, ngoại trừ những nhân vật như Ä Ü Ö è à và cứ thế được thay thế bởi một hình vuông màu đen với một dấu chấm hỏi. Theo tài liệu, trình đọc tệp phải tương thích với các ký tự UTF-8 nên tôi không biết có gì sai.

... 

    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 

... 

Tệp được mã hóa ANSI chứ không phải UTF-8 nhưng người đọc sử dụng UTF-8.

+1

Bạn cần mở tệp để đọc bằng cách sử dụng mã hóa chính xác. Các ['File.ReadLines'] (http://msdn.microsoft.com/en-us/library/dd383357.aspx) quá tải mà có một' Encoding' có lẽ sẽ phù hợp với nhu cầu của bạn tốt hơn. – Oded

+0

và tôi sẽ làm như thế nào? tôi không tìm thấy bất kỳ tham số nào để chuyển đến tệp .. – user2452250

+1

Bạn khám phá giao diện 'Tệp'. Có nhiều hơn là chỉ 'File.OpenText' ... – Oded

Trả lời

4

thay thế tờ khai reader với lỗi này và bây giờ nó hoạt động!

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

Mã hóa.Default đại diện cho trang mã ANSI được đặt trong Bảng điều khiển Windows.

6

Như thế này ... Tôi sử dụng nó để đọc chữ Hán ...

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

cảm ơn nhưng điều này là có cùng một vấn đề như mã của tôi .. – user2452250

+0

@ user2452250: bạn có nghĩa là ký tự đọc lỗi? – matzone

+0

Không có My.Computer.FileSystem trên vb.net của tôi –

Các vấn đề liên quan