2016-12-16 10 views
0

私はCSVファイルからSQLデータベースを作る関数を持っています。しかし、ウムラウトで文字を読むと、私のSQLテーブルに疑問符が表示されます。これをどうすれば解決できますか?これは私のコードです:CSV to SQLデータベースに `?` intead ofü

private static System.Data.DataTable GetDataTabletFromCSVFile(string csv_file_path, string tablenaam) 
    { 
     System.Data.DataTable csvData = new System.Data.DataTable(); 
     try 
     { 
      using (TextFieldParser csvReader = new TextFieldParser(csv_file_path)) 
      { 
       csvReader.SetDelimiters(new string[] { "," }); 
       csvReader.HasFieldsEnclosedInQuotes = true; 
       string[] colFields = csvReader.ReadFields(); 
       foreach (string column in colFields) 
       { 
        DataColumn datecolumn = new DataColumn(column); 
        datecolumn.AllowDBNull = true; 
        csvData.Columns.Add(datecolumn); 
       } 
       while (!csvReader.EndOfData) 
       { 
        string[] fieldData = csvReader.ReadFields(); 
        //Making empty value as null 
        for (int i = 0; i < fieldData.Length; i++) 
        { 
         if (fieldData[i] == "") 
         { 
          fieldData[i] = null; 
         } 
        } 
        csvData.Rows.Add(fieldData); 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
     } 
     InsertDataIntoSQLServerUsingSQLBulkCopy(csvData,tablenaam); 
     return csvData; 
    } 

ありがとうございます。

+1

の文字エンコードとローカライゼーションがデータベース、テーブル、カラムなどに対して正しく設定されているかどうかを確認してください。 – Pieter21

+0

また、例外を飲み込まないでください。 – Dai

答えて

1

これは

TextFieldParser csvReader = new TextFieldParser(csv_file_path, Encoding.GetEncoding(utf-8)) 

のエンコードがファイルから決定されていない場合に使用する文字エンコーディングをだますかもしれません。デフォルトはUTF8です。したがって、要件に応じてコードを変更する必要があります。 Code Page Identifiers

+0

'名前 'utfが現在のコンテキストに存在しません。' –

+0

TextFieldParser csvReader = new TextFieldParser(csv_file_path、Encoding.GetEncoding(" windows-1250 "))は、それを解決しました。 –