2016-09-28 56 views
0

我在這個文件的Web proyect有一個目錄:從.txt文件asp.net解碼文本?

home.text 

和了home.txt文件中我有這樣的文字:

ESPAÑA_BOLSA.xlsx 

所以我有這樣的代碼在vb.net到從.txt文件中提取文本:

Public Shared Function GetTextFromTXT() As String  
     Dim FilePath As String = HttpContext.Current.Server.MapPath("~/excel/home.txt") 
     ' Creates instance of StreamReader class 
     Dim sr As StreamReader = New StreamReader(FilePath) 
     ' Finally, loads file to string 
     Dim FileContent As String = sr.ReadToEnd().ToString 
    Return FileContent 
End Function 

但是這個代碼,我得到這樣的結果在Filecontent:

ESPA�A_BOLSA.xlsx 

於是我就用這條線來嘗試將文本解碼,但不工作:

FileContent = WebUtility.HtmlDecode(FileContent) 

結果應該是這起Filecontent字符串:

ESPAÑA_BOLSA.xlsx 

我是什麼做錯了?謝謝,我接受建議

+2

看一看[這](HTTP://計算器。 com/questions/18915633/determine-textfile-encoding) – Kilazur

+0

非常感謝你的貢獻 –

+0

這可能是一個如下所述的編碼問題,但你也應該改變你的代碼,通過不關閉流讀取器來創建內存泄漏。在VB中研究「使用語句」以獲得最清晰的解決方案 –

回答

3

你需要使用StreamReader constructor,它需要一個Encoding,並傳遞適當的編碼 - 否則它將默認使用UTF-8。 Encoding.Default可能工作,否則你將需要使用特定的編碼。我不知道你的文件的編碼,所以不能告訴你你需要的確切價值,但你可以嘗試:

Dim sr As StreamReader = New StreamReader(FilePath, System.Text.Encoding.Default) 
' or, as an example - you may need a different encoding 
Dim sr As StreamReader = New StreamReader(FilePath, System.Text.Encoding.GetEncoding("Windows-1252")) 
+0

您的代碼對我來說非常完美,比您對自己的時間非常感興趣:-) –