title: C# Cannot access DataTables column via its columnname
body: <p>I have a DataTable which I save into a CSV file.</p>
  
  <p>If I now read that CSV file and fill the value of it into a new DataTable the first column has a questionmark before it. Like '?Strasse'.
  I guess there is a encoding issue, but I don't know how to fix it.</p>
  
  <p>Code that generates CSV:</p>
  
  <pre><code>private static void SaveProgressToCSV(List&lt;DataTable&gt; dts)
          {
              int count = 0;
              _pathToCSVs = new List&lt;string&gt;();
              foreach (DataTable dt in dts)
              {
                  count++;
                  StringBuilder sb = new StringBuilder();
  
                  IEnumerable&lt;string&gt; columnNames = dt.Columns.Cast&lt;DataColumn&gt;().
                                                    Select(column =&gt; column.ColumnName);
                  sb.AppendLine(string.Join(",", columnNames));
  
                  foreach (DataRow row in dt.Rows)
                  {
                      IEnumerable&lt;string&gt; fields = row.ItemArray.Select(field =&gt;
                        string.Concat("\"", field.ToString().Replace("\"", "\"\""), "\""));
                      sb.AppendLine(string.Join(",", fields));
                  }
  
                  File.WriteAllText(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + @"\save"+ count + ".csv", sb.ToString(), Encoding.UTF8);
  
                  _pathToCSVs.Add(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + @"\save" + count + ".csv");
              }
          }
  </code></pre>
  
  <p>Code that reads CSV:</p>
  
  <pre><code>private static void ReadCSVIntoDataTable()
          {
              DataTable = new List&lt;System.Data.DataTable&gt;();
              foreach (String pathToSave in _pathToSave)
              {
                  DataTable dt = new System.Data.DataTable();
  
                  string pathOnly = Path.GetDirectoryName(pathToSave);
                  string fileName = Path.GetFileName(pathToSave);
  
                  string sql = @"SELECT * FROM [" + fileName + "]";
  
                  using (OleDbConnection connection = new OleDbConnection(
                            @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathOnly +
                            ";Extended Properties=\"Text;HDR=Yes;CharacterSet=65001;\""))
                  using (OleDbCommand command = new OleDbCommand(sql, connection))
                  using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
                  {
                      adapter.Fill(dt);
                  }
  
                  DataTable.Add(dt);
              }
          }
  </code></pre>