2

我有 MySQL 数据库,其中表MySqlTable编码为 utf8_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)";

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

4

2 回答 2

3

在连接字符串中指定“charset=utf8;”。例如:“Datasource=192.168.48.128;Database=something;uid=user;pwd=password;charset=utf8;”

当然,将表格的字符集设置为 utf-8 并将排序规则设置为斯洛伐克语变体。

为匈牙利语工作。

学分:在 MySql 中读/写 unicode 数据

于 2013-05-15T18:40:51.703 回答
2

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

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

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

于 2015-09-23T13:28:22.840 回答