将变音字符插入MySQL数据库

时间:2013-03-06 10:36:46

标签: c# mysql .net diacritics

我有MySQL数据库,表格为 MySqlTable ,编码为u​​tf8_slovak_ci,我想通过C#代码插入带有变音符号字符串(ľščťžýáí...)的字符串典型的斯洛伐克语。

我正在使用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)";

问题出在哪里...... 当我尝试插入一些包含特殊字符(f.e. Anča)的字符串时,它会像 Anca 一样保存在数据库中。但是当我通过phpmyadmin执行相应的INSERT查询时,它会被正确保存。问题字符只是ľčťďň(保存为 lctdn ),其他字符如šžýáíéúä保存正常。 谁知道哪里可能有问题?谢谢

2 个答案:

答案 0 :(得分:3)

在连接字符串中指定“charset = utf8;”。例如: “数据源= 192.168.48.128;数据库=东西; UID =用户; PWD =密码;字符集= UTF8;”

当然,将表格的字符集设置为utf-8,并将字符串整理为斯洛伐克变体。

为匈牙利语工作。

致谢:read/write unicode data in MySql

答案 1 :(得分:1)

mysql命令行工具的等效项是 - default-character-set 参数。例如:

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

其中make_db.sql是utf中的sql脚本(带变音符号)。