2011-04-06 41 views
1

我正試圖將從谷歌聯繫人導出的.csv文件導入到VB.net中的文本框中。出於某種原因,諸如éåäö等字符在輸入時顯示爲 。將.csv文件導入到文本框後。特殊字符顯示爲「 」

這是所使用的代碼要導入的文件:

 Dim ofd As New OpenFileDialog() 
    ofd.CheckFileExists = True 
    ofd.CheckPathExists = True 
    ofd.Filter = "Text Files|*.csv" 'for multiple filters do this: 
    'ofd.Filter = "Text Files, XML Files|*.txt;*.xml" 
    If ofd.ShowDialog() = DialogResult.OK Then 
     Using sr As New StreamReader(ofd.FileName) 
      txtInput.Text = sr.ReadToEnd() 
     End Using 
    End If 

我怎樣才能解決這個問題?

回答

2

您正在閱讀錯誤編碼的文件。

弄清楚什麼編碼它真的是(可能Encoding.GetEncoding(1252)),然後傳遞正確的Encoding實例您正在使用的StreamReader構造任何方法。

+0

從記憶,找出編碼的最快的方法是用記事本打開該文件,選擇另存爲從菜單中,你會看到該文件的當前編碼在一個下拉框旁邊的保存按鈕。理想情況下,您可以讓任何人提供文件給您,以便始終以UTF8格式保存它 - 這樣您的代碼就能「正常工作」。 – 2011-04-06 16:40:20

+0

Thx麥克風是一種很容易找到編碼的方法。 – Charkel 2011-04-06 17:07:55

0

.CSV文件用ANSII編碼。在導入時沒有找到如何使用ANSII,所以我使用UTF-8重新保存了文件,現在它可以工作。我確信有辦法做到這一點,而不必手動這樣做,但現在我必須這樣做。

+0

您可以將'Encoding.ASCII'傳遞給'StreamReader'ctor。 – SLaks 2011-04-06 17:26:48

0
Private Sub cmdStore_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStore.Click 
     'InsertDBValues() 
    Dim filename As String = "C:\gProducts.csv" 
     Dim fields As String() 
     Dim delimiter As String = "," 
     Using parser As New TextFieldParser(filename) 
      parser.SetDelimiters(delimiter) 
      While Not parser.EndOfData 
       ' Read in the fields for the current line 
       fields = parser.ReadFields() 
       ' Add code here to use data in fields variable. 
       txtName.Text = fields(1).ToString ' likewise give all textbox 

      End While 
     End Using 

    End Sub 
相關問題