テーブルを持つ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になります。
転送中に何かが起こります。何?私は助けが必要です?