我的MYSQL数据库有一个表(字符集在utf8-> utf8_general_ci上)。当我在此表中插入字符串数据时(通过MYSQLquery浏览器)正确插入中欧“ČĆŽŠĐ”字母。但是,当我尝试通过C#应用程序(简单的VS2010窗体应用程序)插入相同的内容时:
“Č”我在表格中“C”,“Ć”我得到“C”在表格和“Đ”我得到“D”。 “Ž”和“Š”很好。
我认为它取决于VS2010选项,或者......
知道为什么会这样吗?
On 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 form app中执行此操作时,我得到相同的结果(结果mbox是正确的)。
但是,当我将相同的字符串传输到数据库ČĆĐ时, CCD 。
转移中发生了一些事情。什么?我需要帮助吗?
答案 0 :(得分: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);
答案 1 :(得分:0)
尝试将表格排序更改为utf8_unicode_ci,因为我认为在排序规则中删除了Accents,因为š等于s等等...并且所有小写字母都是大写的...尝试更改排序规则