0

我有一个 MYSQL 数据库,它有一个表(字符集在 utf8->utf8_general_ci 上)。当我在此表中插入字符串数据时(通过 MYSQLquery 浏览器)中欧“ČĆŽŠĐ”字母被正确插入。但是,当我尝试通过 C# 应用程序(简单的 VS2010 Windows 窗体应用程序)插入相同的内容时:

"Č"我在表中得到"C""Ć"我在表中得到"C",对于"Đ"我得到"D"“Ž”“Š”很好。

我想它最高可达 VS2010 选项,或者......

知道为什么会这样吗?

代码

在 Click 事件中,我将数据发送到我的表:

private void button1_Click(object sender, EventArgs e)
{
    string a= textBox1.Text;
    string b= textBox2.Text;
    int b= int.Parse(textBox3.Text);
    string d= textBox4.Text;

    string cs = @"server=localhost;userid=root;password=xxx;database=table";
    string myquerystring = "INSERT INTO table VALUES(0,'" +a+ "', '" +b+ "','"+c+"', '"+d+"')";

    try
    {
        conn = new MySqlConnection(cs);
        conn.Open();
        MySqlCommand cmd = new MySqlCommand();
        cmd.Connection = conn;
        cmd.CommandText = myquerystring;
        cmd.ExecuteNonQuery();
    }
    catch (MySqlException ex)
    {
        MessageBox.Show(ex.ToString());
    }
    finally
    {
        if (conn != null)
        {
            conn.Close();
        }
    }

}

好的,

我试过这个编码逻辑:

        string letters = "čćžšđ"; 

        byte[] byteENC = Encoding.UTF8.GetBytes(letters);

        Console.WriteLine("UTF-8  Text : {0}", Encoding.UTF8.GetString(byteENC));

我得到了它们。此外,当我在 win 表单应用程序中执行此操作时,我得到了相同的结果(mbox 中的结果是正确的)。

但是,当我将相同的字符串传输到数据库时,ČĆĐCCD

转移中发生了一些事情。什么?我需要帮助?

4

3 回答 3

1

这是转换字符串编码的代码

byte[] data = Encoding.ASCII.GetBytes(textBox1.Text);
string n = Encoding.UTF8.GetString(data);
MessageBox.Show(n);

编辑:或者你可以获得中欧编码

Encoding enc = Encoding.GetEncoding("windows-1250");
byte[] data = enc.GetBytes(textBox1.Text);
于 2012-09-07T22:08:26.917 回答
1

我认为您可以尝试修改连接字符串以将 charsetOption 添加到此>>>

string cs = @"server=localhost;userid=root;password=xxx;database=table;CharSet=UTF8";
于 2012-09-10T08:04:46.247 回答
0

尝试将表排序规则更改为 utf8_unicode_ci,因为我认为在您的排序规则中删除了重音,因为 š 等于 s 等等......并且所有小写字母都是大写的......尝试更改排序规则

于 2012-09-08T07:40:02.147 回答