2013-03-06 1 views
2

У меня есть базы данных MySQL с таблицей MySqlTable который кодируется utf8_slovak_ci, и я хотел бы, чтобы вставить строки с диакритическими символами (ľščťžýáí ...), типичными для словацкого языка через C# код.Вставка диакритических символов в базу данных MySQL

Я использую пространство имен MySql.Data.MySqlClient для разрешения объектов MySql. Мой C# метод:

public void Insert(string sqlQuery, params string[] strings) 
    { 
     MySqlCommand command = new MySqlCommand(sqlQuery, connection); 

     for (int i = 0; i < strings.Length; i++) 
     { 
      command.Parameters.Add(new MySqlParameter("@str" + i, strings[i])); 
     } 

     try 
     { 
      connection.Open(); 
      command.ExecuteNonQuery(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message, "Chyba!", MessageBoxButton.OK, MessageBoxImage.Error); 
     } 
     finally 
     { 
      connection.Close(); 
     } 
    } 

Вызов этого метода из программы:

database.Insert(query, newEmployee.Name); 

где запрос является

string query = @"INSERT INTO MySqlTable(name) " + 
         "VALUES(@str0)"; 

Где проблема ... Когда я пытаюсь вставить некоторые строки включая специальные символы (fe Anča), сохраняется как Anca в базе данных. Но когда я выполняю соответствующий запрос INSERT через phpmyadmin, он сохраняется правильно. Проблемными символами являются только ľčťďň (сохранен как lctdn), другие символы, такие как šžýáíéúäô сохранены в порядке. Кто-нибудь знает, где может быть проблема? Спасибо

ответ

3

В строке подключения укажите «charset = utf8;». Например: "Datasource = 192.168.48.128; Database = something; uid = user; pwd = password; charset = utf8;"

И, конечно же, установите кодировку таблицы в utf-8 и сопоставление со словяком.

Работает на венгерском языке.

Кредиты: read/write unicode data in MySql

+0

Человек! Я ждал этого ответа более двух месяцев. Thanx, он работает отлично. Мне жаль, что я не заметил ответа, который вы здесь связали. – flipis

1

Эквивалентные для инструментов командной строки MySQL является --default-символьного набора параметра. Например:

mysql -h host -u user -ppass --default-character-set=utf8 
mysql> source make_db.sql 

где make_db.sql является SQL скрипт в кодировке (с диакритическими знаками).