【发布时间】:2012-09-07 21:25:54
【问题描述】:
我有一个 MYSQL 数据库,它有一个表(字符集在 utf8->utf8_general_ci 上)。当我在此表中插入字符串数据时(通过 MYSQLquery 浏览器)中欧“ČĆŽŠĐ”字母被正确插入。但是,当我尝试通过 C# 应用程序(简单的 VS2010 Windows 窗体应用程序)插入相同的内容时:
"Č" 我在表中得到 "C","Ć" 我得到 "C"在表格中,对于 "Đ",我得到 "D"。 "Ž" 和 "Š" 都不错。
我想它最多 VS2010 选项,或者...
知道为什么会这样吗?
代码
在点击事件时,我将数据发送到我的表:
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。
在传输过程中发生了一些事情。什么?我需要帮助吗?
【问题讨论】:
-
你能放一些你的 C# 代码吗?
-
看彼得,代码真的很简单。您在一个表单上有连接字符串、查询字符串、几个 texbox 和 btns,...,没什么大不了的。连接效果很好,但我只是没有将数据输入数据库,因为我将它们写入文本框并将它们发送到数据库。例如,如果我在数据库中的 textBox 中写入“Č”,我会看到“Č”,但是如果我在 textBox 中写入“Ž”并将其发送到我的数据库表中,我会在写给他时看到这封信。这就是混乱
-
@Sylca - 虽然代码可能很简单,但查看它会很有帮助,尤其是了解如何将编码应用于保存数据的字符串。
-
你是对的@Chris :-),代码马上就会来