C# 连接 Mysql 中文乱码问题

hb_bigsea 2009-03-22 08:33:51
winform下使用了 MySql.Data.MySqlClient;
数据库是utf-8的

连接句话也加入了
charset='utf-8',和其它编码方式.

查询出来的结果中文还是乱码,请教解决方案.
...全文
1347 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
东北虎121 2012-10-06
  • 打赏
  • 举报
回复
我遇到的是datagrid控件的列标题乱码,内容是正常的,研究了两天发现用新版的驱动解决了。
canlanrizi 2011-03-03
  • 打赏
  • 举报
回复
            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语句有两个~
instemast 2010-08-23
  • 打赏
  • 举报
回复
用blob, 不要用text.
  • 打赏
  • 举报
回复

//给你完整的一个代码,你一看就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();
}
}
ncowboy 2009-03-24
  • 打赏
  • 举报
回复
为什么大家一提到中文乱码,马上就是gb2312呢。
如果我的文章里既有阿拉伯文字,又有汉字。也用gb2312么?

楼主的连接字符串是什么?
http://dev.mysql.com/doc/refman/5.0/en/connector-net-examples-mysqlconnection.html#connector-net-examples-mysqlconnection-connectionstring
请尝试在连接字符串里加入CharSet的。其值设置utf8,或者gbk等。



sunshine_anycall 2009-03-24
  • 打赏
  • 举报
回复
up
mark
crowzwong 2009-03-24
  • 打赏
  • 举报
回复
MySQLCommand com = new MySQLCommand("set names gb2312", conn);

com.ExecuteNonQuery();

这句有用
子夜1978 2009-03-24
  • 打赏
  • 举报
回复
是数据字段的 字符集修改一下应该能好!
村部 2009-03-24
  • 打赏
  • 举报
回复
学习
dyuanyuan 2009-03-24
  • 打赏
  • 举报
回复
连接数据库时要写上这样一句话
MySQLCommand com = new MySQLCommand("set names gb2312", conn);

com.ExecuteNonQuery();
snowecho 2009-03-24
  • 打赏
  • 举报
回复


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);
}
dyuanyuan 2009-03-24
  • 打赏
  • 举报
回复
在连接数据库的时候写上这样一句话
MySQLCommand com = new MySQLCommand("set names gb2312", conn);

com.ExecuteNonQuery();
snowecho 2009-03-23
  • 打赏
  • 举报
回复
需要进行字符转换,连接句话也加入了 charset='utf-8',和其它编码方式也是没用的.

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

查询出来的结果乱码长度是中文的两倍,是因为c#中的一个字符长度是MySql的两倍。一个汉字在MySql占两个字符,
c#会把它当成两个汉字来处理
hb_bigsea 2009-03-23
  • 打赏
  • 举报
回复
顶起来,找高人解决.难道是MySql.Data.MySqlClient的问题.
hb_bigsea 2009-03-22
  • 打赏
  • 举报
回复
还有在不改变,my.ini和数据表的情况下,能解决该问题的方法不?
wuyq11 2009-03-22
  • 打赏
  • 举报
回复
打开mysql安装目录的my.ini,分别在[client]和[mysqld]中都加入default-character-set= gb2312
新建表的时候,要把character set 和Collation分别选择为gb2312和gb2312_chinese_ci
hb_bigsea 2009-03-22
  • 打赏
  • 举报
回复
救救我
hb_bigsea 2009-03-22
  • 打赏
  • 举报
回复
没人接么?

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧