Bug #27502 UTF characters inserts into tables as "???" (c# + connector/net)
Submitted: 28 Mar 2007 15:44 Modified: 13 Apr 2007 14:05
Reporter: Psy After Email Updates:
Status: Can't repeat Impact on me:
None 
Category:Connector / NET Severity:S2 (Serious)
Version:5.0.23 OS:Any (unix)
Assigned to: CPU Architecture:Any

[28 Mar 2007 15:44] Psy After
Description:
When I insert/update new data (in utf8) into tables, there inserting characters "???" instead letters (all languages. english insert well)

My database CHARSET is utf8_general_ci
all tables and all fields - CHARSET utf8_general_ci
in my connection string wrote "CHARSET=utf8;"

but when i retrieve data from tables - i get "???" instead letters

How to repeat:
create database with CHARSET utf8_general_ci
create table with CHARSET utf8_general_ci

in c# use connector/net for working with database

create new SQL command for insert/update with passing utf string
[28 Mar 2007 15:45] Psy After
MySql version is 5.0.23
connector/net version - tried with 5.0.3,5.0.5,5.0.6
[13 Apr 2007 14:05] Tonci Grgin
Hi and thanks for your report.

I am unable to verify it:
 - MySQL 5.0.38BK on WinXP Pro SP2
 - c/Net 5, latest sources, NET FW 2.0

Server version: 5.0.38-log Source distribution
mysql> show variables like "%char%";
+--------------------------+-----------------------------+
| Variable_name            | Value                       |
+--------------------------+-----------------------------+
| character_set_client     | latin1                      |
| character_set_connection | latin1                      |
| character_set_database   | utf8                        |
| character_set_filesystem | binary                      |
| character_set_results    | latin1                      |
| character_set_server     | utf8                        |
| character_set_system     | utf8                        |
| character_sets_dir       | C:\mysql507\share\charsets\ |
+--------------------------+-----------------------------+

Test case:
            using (MySqlConnection c = new MySqlConnection("DataSource=localhost;Database=test;UserID=root;Password=;PORT=3306;charset=utf8"))
            {
                c.Open();

                MySqlCommand cmd = new MySqlCommand("DROP TABLE IF EXISTS testbug25528", c);
                cmd.ExecuteNonQuery();

                cmd.CommandText = "CREATE TABLE testBug25528("
                        + "Id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,"
                        + " translationValue char(255)"
                        + "\n)ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;";

                cmd.ExecuteNonQuery();
                cmd.CommandText = "insert into testBug25528 values(NULL,'Mössbauer Effect')";
                cmd.ExecuteNonQuery();
                cmd.CommandText = "insert into testBug25528 values(NULL,'Some Cro chars: ŠĐČĆŽšđčćž')";
                cmd.ExecuteNonQuery();
                cmd.CommandText = "SELECT * FROM testBug25528";
                cmd.ExecuteNonQuery();

                MySqlDataAdapter da = new MySqlDataAdapter("SELECT * FROM testbug25528", c);
                DataTable dt = new DataTable();
                da.Fill(dt);

                Assert.AreEqual(2, dt.Columns.Count);
                Assert.AreEqual(2, dt.Rows.Count);
                DisplayData(dt);
                Console.WriteLine("Done.");
                dt.Clear();
                da.Dispose();
                c.Close();
            }

        private static void DisplayData(System.Data.DataTable table)
        {
            foreach (System.Data.DataRow row in table.Rows)
            {
                foreach (System.Data.DataColumn col in table.Columns)
                {
                    Console.WriteLine("{0} = {1}", col.ColumnName, row[col]);
                }
                Console.WriteLine("============================");
            }
        }

Output:
Id = 1
translationValue = Mössbauer Effect
============================
Id = 2
translationValue = Some Cro chars: ŠĐČĆŽšđčćž
============================
Done.

If you can provide me with more info regarding this, please reopen the report.