Импорт csv tom ysql database - как читать файл с польскими символами?
У меня есть csv-файл, в котором тоже есть польские символы. Содержание этого находится здесь:
ID_WORKER;FNAME;LNAME;WORKERS_GROUP;POSITION; 1;Paweł;ĄąĆćĘꣳŃńÓ󌜏źŻż;IT;IT Specialist; 6;Dawid;ĄąĆćĘꣳŃńÓ󌜏źŻż;Technologists;Technologists; 8;Maciej;ĄąĆćĘꣳŃńÓ󌜏źŻż;Storekeepers;Storekeeper;
Как вы видите, у него есть такие символы, как "Ąą Ćć Ęę Łł Ńń Óó Śś Źź Żż". Затем я импортирую csv файл с нижеприведенным кодом:
private DataTable ImportFile() { DataTable imported_data = new DataTable(); OpenFileDialog ofd = new OpenFileDialog(); ofd.Title = "Open csv file"; ofd.DefaultExt = "*.csv"; ofd.Filter = "Documents (*.csv)|*.csv"; ofd.ShowDialog(); FileInfo fi = new FileInfo(ofd.FileName); string FileName1 = ofd.FileName; string excel = fi.FullName; using(StreamReader sr = new StreamReader(excel, Encoding.Default)) { string header = sr.ReadLine(); if (string.IsNullOrEmpty(header)) { MessageBox.Show("Not found or loaded not correct file."); return null; } string[] header_columns = header.Split(','); foreach(string header_column in header_columns) { imported_data.Columns.Add(header); } while (!sr.EndOfStream) { string line = sr.ReadLine(); if (string.IsNullOrEmpty(linia)) continue; string[] fields = line.Split(','); DataRow imported_row = imported_data.NewRow(); for (int i = 0; i < fields.Count(); i++) { imported_row[i] = fields[i]; } imported_data.Rows.Add(imported_row); } } return imported_data; }
И когда я вставляю эти импортированные данные со всем содержимым из csv файла в базу данных с этим кодом ниже:
private void save_modules(DataTable imported_data) { string connection = "datasource=localhost;port=3306;username=root;password="; using (MySqlConnection conn = new MySqlConnection(connection)) { conn.Open(); foreach (DataRow importRow in imported_data.Rows) { string query = @"INSERT IGNORE INTO try1.workers (ID_WORKER, FNAME, LNAME, WORKERS_GROUP, POSITION) VALUES (@ID_WORKER, @FNAME, @LNAME, @WORKERS_GROUP, @POSITION);"; MySqlCommand cmd = new MySqlCommand(query, conn); cmd.Parameters.AddWithValue("@ID_WORKER", importRow["ID_WORKER"]); cmd.Parameters.AddWithValue("@FNAME", importRow["FNAME"]); cmd.Parameters.AddWithValue("@LNAME", importRow["LNAME"]); cmd.Parameters.AddWithValue("@WORKERS_GROUP", importRow["WORKERS_GROUP"]); cmd.Parameters.AddWithValue("@POSITION", importRow["POSITION"]); cmd.ExecuteNonQuery(); } conn.Close(); } MessageBox.Show("Imported to database"); }
Я вижу в базе данных mysql в столбце "LNAME" не все польские символы: "Aa Cc Ee Ll Nn Óó Ss Zz Zz". И этого недостаточно.
Что касается базы данных mysql, то я установил метод сравнения субтитров utf8_polish_ci.
Я использую phpmyadmin 4.8.4 и версия базы данных MySQL 10.1.37-MariaDB
Теперь, как я могу импортировать csv с польскими символами? Может быть, требуется изменить строку кода в первом фрагменте импорта кода csv-файла:
using(StreamReader sr = new StreamReader(excel, Encoding.Default))
Любая идея
Что я уже пробовал:
Я пытался импортировать csv файл с другими форматами кодировки:
1) кодирование.Default - тогда он показывает, как я показываю в этом примере: "Aa Cc Ee Ll Nn Óó Ss Zz Zz".
2) кодирование.ASCII - тогда он показывает все символы"?"
3) кодирование.UTF8 - но он также показывает все символы"?".
4) кодирование.GetEncoding(1252) - не слишком помогло.