winform下使用了 MySql.Data.MySqlClient; 
数据库是utf-8的连接句话也加入了
charset='utf-8',和其它编码方式.查询出来的结果中文还是乱码,请教解决方案.

解决方案 »

  1.   

    打开mysql安装目录的my.ini,分别在[client]和[mysqld]中都加入default-character-set= gb2312
    新建表的时候,要把character set 和Collation分别选择为gb2312和gb2312_chinese_ci
      

  2.   

    还有在不改变,my.ini和数据表的情况下,能解决该问题的方法不?
      

  3.   

    需要进行字符转换,连接句话也加入了 charset='utf-8',和其它编码方式也是没用的. 查询出来的结果乱码长度是中文的两倍,是因为c#中的一个字符长度是MySql的两倍。一个汉字在MySql占两个字符,
    c#会把它当成两个汉字来处理
      

  4.   

    需要进行字符转换,连接句话也加入了 charset='utf-8',和其它编码方式也是没用的. 查询出来的结果乱码长度是中文的两倍,是因为c#中的一个字符长度是MySql的两倍。一个汉字在MySql占两个字符,
    c#会把它当成两个汉字来处理
      

  5.   

    连接数据库时要写上这样一句话
     MySQLCommand com = new MySQLCommand("set names gb2312", conn);  com.ExecuteNonQuery();
      

  6.   

    MySQLCommand com = new MySQLCommand("set names gb2312", conn);   com.ExecuteNonQuery(); 这句有用
      

  7.   

    为什么大家一提到中文乱码,马上就是gb2312呢。
    如果我的文章里既有阿拉伯文字,又有汉字。也用gb2312么?楼主的连接字符串是什么?
    http://dev.mysql.com/doc/refman/5.0/en/connector-net-examples-mysqlconnection.html#connector-net-examples-mysqlconnection-connectionstring
    请尝试在连接字符串里加入CharSet的。其值设置utf8,或者gbk等。
      

  8.   

    在连接数据库的时候写上这样一句话
    MySQLCommand com = new MySQLCommand("set names gb2312", conn);            com.ExecuteNonQuery();
      

  9.   

            private void button1_Click(object sender, EventArgs e)
            {
                string str = "set names " + System.Text.Encoding.Default.HeaderName;
                string temp;
                MySqlCommand com;
                MySqlDataReader rd;            com = new MySqlCommand(str, mycon);
                com = new MySqlCommand("select * from  name", mycon);
               
                rd = com.ExecuteReader();
                while (rd.Read())
                {
                    temp = (string)rd["name"];
                    richTextBox1.AppendText( DBstring(temp));
                }
                rd.Close();
            }        private string DBstring(string dbstr)
            {
                byte[] str = new byte[dbstr.Length];
                for (int i = 0; i < dbstr.Length; i++)
                    str[i] = (byte)(dbstr[i]);
                return System.Text.Encoding.Default.GetString(str, 0, dbstr.Length);
            }
      

  10.   


      //给你完整的一个代码,你一看就OK了,一至这样用哈,没得问题!
      private void button1_Click(object sender, EventArgs e)
            {
                MySQLConnection conn = null;
                conn = new MySQLConnection(new MySQLConnectionString("localhost", "dif30test", "root", "qaz").AsString);         
                try
                {
                    conn.Open();
                    MySQLCommand com = new MySQLCommand("set names gb2312", conn);
                    com.ExecuteNonQuery();
                    MySQLDataAdapter dap = new MySQLDataAdapter("select * from dif_drug", conn);
                    DataSet ds = new DataSet();
                    dap.Fill(ds, "drugs");
                    dgv1.DataSource = ds.Tables[0].DefaultView;
                }
                finally
                {
                    conn.Close();
                }
            }
      

  11.   

                Program NewUser=new Program("localhost","kuaso",InputUsername,InputPwd);
                //建立连接
                MySQLConnection conn= null;
                conn = new MySQLConnection(new MySQLConnectionString(NewUser.Host,NewUser.Dbname,NewUser.Username,NewUser.Pwd).AsString);
                //conn.Open();
                try
                {
                    conn.Open();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    return;
                }
                finally
                {                
                }
                //执行查询
                MySQLCommand com = new MySQLCommand("set names gb2312", conn);
                com.ExecuteNonQuery();            MySQLCommand comm;            
                comm = new MySQLCommand("select * from kuaso_dh_goodlinks", conn);
                // 读取
                MySQLDataReader reader = comm.ExecuteReaderEx();
                //显示资料
                Console.Write("\n\n\n");
                while (reader.Read()){
                    Console.WriteLine("Host={0},\n\rUser={1}",reader.GetString(0),reader.GetString(1));
                }
                reader.Close();
                conn.Close();
    参考一下这个。里面的command语句有两个~
      

  12.   

    我遇到的是datagrid控件的列标题乱码,内容是正常的,研究了两天发现用新版的驱动解决了。