区切られたファイルを読み取り、データグリッドビューの最初の数行を表示するアプリケーションに取り組んでいます。次に、これらの行の特定の要素を使用してSQLクエリ(郵便番号検索)を実行します。列の値の1つに£が含まれているデータを取得するまではすべて正常に機能していました。データグリッドに表示されると、?が付いたひし形のように見えます。その中にはありますが、ファイルを書き戻すと(SQL結果が追加されて)さらに悪いことに、次のようになります。
おそらくエンコーディングを指定する必要があると思いましたが、エンコーディング設定が見つからない次のものを使用していました。
Sub ParseFile(inputfile)
Dim dataFile = My.Computer.FileSystem.OpenTextFieldParser(inputFile)
Using dataFile
dataFile.TextFieldType = FileIO.FieldType.Delimited
If DelimiterComboBox.SelectedItem = ".csv" Then
dataFile.SetDelimiters(",")
ElseIf DelimiterComboBox.SelectedItem = ".txt" Then
dataFile.SetDelimiters(vbTab)
End If
Dim currentRow As String()
currentRow = dataFile.ReadFields()
エンコーディングを指定できるTextFieldReaderを使用するように変更しようとしましたが、変換エラーが発生したため、ファイル名を変数として渡すことができません。次に、変数をファイル名のストリームとして定義しようとしましたが、次のようになります。「System.String」タイプのオブジェクトを「System.IO.Stream」タイプにキャストできません。
どういうわけかファイル名からストリームを作成し、それを「dataFile」オブジェクトにフィードして、エンコーディングを制御(または検出)できるようにする必要があると考えています。
このアプリは、さまざまな区切りファイル(.csv、タブ、パイプが最も一般的)で動作する必要があることを指摘しておく必要があります。