C# 连接 Mysql 中文乱码问题 winform下使用了 MySql.Data.MySqlClient; 数据库是utf-8的连接句话也加入了charset='utf-8',和其它编码方式.查询出来的结果中文还是乱码,请教解决方案. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 打开mysql安装目录的my.ini,分别在[client]和[mysqld]中都加入default-character-set= gb2312新建表的时候,要把character set 和Collation分别选择为gb2312和gb2312_chinese_ci 还有在不改变,my.ini和数据表的情况下,能解决该问题的方法不? 需要进行字符转换,连接句话也加入了 charset='utf-8',和其它编码方式也是没用的. 查询出来的结果乱码长度是中文的两倍,是因为c#中的一个字符长度是MySql的两倍。一个汉字在MySql占两个字符,c#会把它当成两个汉字来处理 需要进行字符转换,连接句话也加入了 charset='utf-8',和其它编码方式也是没用的. 查询出来的结果乱码长度是中文的两倍,是因为c#中的一个字符长度是MySql的两倍。一个汉字在MySql占两个字符,c#会把它当成两个汉字来处理 连接数据库时要写上这样一句话 MySQLCommand com = new MySQLCommand("set names gb2312", conn); com.ExecuteNonQuery(); MySQLCommand com = new MySQLCommand("set names gb2312", conn); com.ExecuteNonQuery(); 这句有用 为什么大家一提到中文乱码,马上就是gb2312呢。如果我的文章里既有阿拉伯文字,又有汉字。也用gb2312么?楼主的连接字符串是什么?http://dev.mysql.com/doc/refman/5.0/en/connector-net-examples-mysqlconnection.html#connector-net-examples-mysqlconnection-connectionstring请尝试在连接字符串里加入CharSet的。其值设置utf8,或者gbk等。 在连接数据库的时候写上这样一句话MySQLCommand com = new MySQLCommand("set names gb2312", conn); com.ExecuteNonQuery(); 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); } //给你完整的一个代码,你一看就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(); } } 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语句有两个~ 我遇到的是datagrid控件的列标题乱码,内容是正常的,研究了两天发现用新版的驱动解决了。 C# 如何实现类似WSASend()的方法。Socket相关。 关于SESSION丢失后自动跳转到主页 host得问题 vs2005连接 sqlserver 中文显示乱码问题 急!GetPrivateProfileString函数里的字符缓冲区最大能设能多少 有限制吗? C# ListBox怎么默认选中第一项? 《C#高级编程》源代码 有关textbox的数据清除问题? C++写的结构在C#中怎么声明 sqlDataAdapterEmployees.Fill的问题 C#WinForm程序占用虚拟内存无法释放 上传图片到服务器出错
新建表的时候,要把character set 和Collation分别选择为gb2312和gb2312_chinese_ci
c#会把它当成两个汉字来处理
c#会把它当成两个汉字来处理
MySQLCommand com = new MySQLCommand("set names gb2312", conn); com.ExecuteNonQuery();
如果我的文章里既有阿拉伯文字,又有汉字。也用gb2312么?楼主的连接字符串是什么?
http://dev.mysql.com/doc/refman/5.0/en/connector-net-examples-mysqlconnection.html#connector-net-examples-mysqlconnection-connectionstring
请尝试在连接字符串里加入CharSet的。其值设置utf8,或者gbk等。
MySQLCommand com = new MySQLCommand("set names gb2312", conn); com.ExecuteNonQuery();
{
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);
}
//给你完整的一个代码,你一看就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();
}
}
//建立连接
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语句有两个~