Программирую на C#.
Есть база данных MySQL, содержащая русские символы. Программа работает, но вместо русских символов на выходе выдаёт знаки вопроса:
string connectionString = "Database=mydb3;Data Source=localhost;User Id=root;Password=pass;charset=cp1251";
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
string queryString1 = "SHOW VARIABLES";
string queryString2 = "SET character_set_results = \"cp1251\",character_set_database = \"cp1251\",character_set_server = \"cp1251\",character_set_client = \"cp1251\",character_set_connection = \"cp1251\";";
string queryString3 = @"SELECT s.Name
FROM Songs AS s, Autors AS a
WHERE s.AutorID = a.ID;";
MySqlCommand preCommand = new MySqlCommand(queryString2, connection);
MySqlCommand command = new MySqlCommand(queryString1, connection);
connection.Open();
MySqlDataReader preReader = preCommand.ExecuteReader();
while (preReader.Read())
{
}
preReader.Close();
MySqlDataReader reader = command.ExecuteReader();
try
{
textBox1.Text = "";
while (reader.Read())
{
textBox1.Text = textBox1.Text + reader.GetString(0) + "=" + reader.GetString(1) + "\r\n";
}
}
catch (Exception ex)
{
textBox2.Text = ex.Message;
}
finally
{
// Always call Close when done reading.
reader.Close();
}
command = new MySqlCommand(queryString3, connection);
reader = command.ExecuteReader();
textBox3.Text = "";
while (reader.Read())
{
//textBox3.Text = textBox3.Text + Encoding.Default.GetString((byte[])reader[0]) + "\r\n";
textBox3.Text = textBox3.Text + reader.GetString(0) + "\r\n";
}
reader.Close();
connection.Close();
}
А если вместо reader.GetString(0) написать Encoding.Default.GetString((byte[])reader[0]) всё работает. Что надо сделать, чтобы функция GetString срабатывала правильно?