2013-04-18 42 views
2

我一直在嘗試使用StreamReader讀取日誌文件。我無法驗證它是什麼編碼,因爲當我在記事本+ +中打開它,並選擇ANSI編碼,我得到這樣的結果:VB.net不會閱讀文本文件正確

screenshot

我得到使用ANSI時所需的字符,但它後跟之類的東西[NULL] [EOT] [SOH] [NUL] [SI]

當我嘗試和讀取VB中的文件(使用StreamReaderReadAll)與選擇的結果字符串我回來ANSI編碼是完全錯誤的。

我怎麼能讀VB.net這樣的文件嗎?

+3

這看起來不像我見過的任何文本文件。看起來像它的專有格式。 –

+0

下面是對文件的鏈接(這恰好是一個日誌文件!您可以在記事本中打開它)http://www.tvlcsa.com/Stackoverflow/Login20130419.rdb – Mystx

+0

嗯,我試圖讓該編碼方法被使用,但我得到的是,它是用俄文字母編碼的,[koi-7](http://en.wikipedia.org/wiki/KOI7)encoding.lol – Sam

回答

0

你可以使用IO.File.ReadAllText("File Location", encoding as System.Text.Encoding)方法,

Dim textFromFile as string = IO.File.ReadAllText("C:\Users\Jason\Desktop\login20130417.rdb", System.Text.Encoding.ASCII) 'Or Unicode, UFT32, UFT8, UFT7, BigEndianUnicode or default. Default is ANSI. 

如果你還沒有得到你需要使用默認編碼(ANSI)的文本,那麼你可以嘗試其他6種不同的編碼方法。

更新...

看來,你的文件已損壞,使用下面的代碼我能得到什麼的是文件中的二進制表示,我得到這個,

1111111111111101000001110000010000000000000001010000000000010011000000000000100000000000000111100000000000100110000000000011100000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111110100000111000001000000000000000101000000000001001100000000000010000000000000011110000000000010100000000000111111111111110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 

大量的空數據表明文件已損壞,這也解釋了爲什麼我們每次嘗試讀取文件時都無法獲取大量數據。

的代碼,

Dim fileData As String = IO.File.ReadAllText("C:\Users\Jason\Desktop\login20130417.rdb") 
Dim i As Integer = 0 
Dim binaryData As String = "" 
Dim ch As String = "" 
Do Until i = fileData.Length 
    ch = fileData.Chars(i) 
    bin = bin & System.Convert.ToString(AscW(ch), 2).PadLeft(8, "0") 
    i = i + 1 
Loop 
+0

謝謝嗨!我試過了,它仍然沒有工作, – Mystx

+0

即時將要上傳rdb文件,並會發佈一個鏈接,可能是文件有問題。 (它的日誌文件!) – Mystx

+0

你是否嘗試過所有6種不同的編碼方法? – Sam

0

由於@Daniel A.懷特在他的評論暗示,該文件似乎並沒有被編碼像一個「正常」的文本文件。在這種情況下,StreamReader將不起作用。我會嘗試使用BinaryReader

+0

基本上,我試圖讀取的文件是由服務器應用程序生成的日誌文件。該軟件是在臺灣寫的,所以日誌文件不能在VB.net – Mystx

+0

im不能確定如果它的編碼方式,但這裏是一個鏈接到文件http://www.tvlcsa.com/Stackoverflow/Login20130419 .rdb – Mystx

+0

@AJ:即使你使用BinaryReader,你仍然需要對數據進行編碼,以便它甚至可讀... – Sam

0

Rdb文件?從來沒有聽說過。快速谷歌使得它不太清楚 - N64數據庫文件,Darkbot等..

但是考慮到你的名字,以及打開的文件的一般看,我會說,它的二進制文件。

如果你想閱讀vb.net中的文件,你需要一個排序庫,我不能幫你一個,直到你能夠闡明文件可能是什麼,或什麼是什麼它是用來創建的。

+0

我能找到的最有用的東西就是R-project。 http://www.r-project.org 這個主頁似乎並不完全相關,但在其關於rdb文件的問題上還存在一些問題,還有大量的如何用c語言打開它。 –

+0

http://www.tvlcsa.com/Stackoverflow/Login20130419.rdb - >它的日誌文件!你可以用記事本打開它。 – Mystx

+1

我試着用記事本打開,沒有得到任何可讀的東西。 –