+ -
当前位置:首页 → 问答吧 → C# mysql中文乱码

C# mysql中文乱码

时间:2011-12-02

来源:互联网

采用的是 MySQL 5.5.15,一路设置都是默认的

现有表
create table person(
id char(20) not null,
name char(50) not null,
primary key(id)
);

使用 MySql.Data.dll 操作数据库

public int ExecuteNonQuery(string sql)
{
  MySqlCommand command = new MySqlCommand(sql, m_conn);
  return command.ExecuteNonQuery();
}

public DataTable ExecuteQuery(string sql)
 {
  DataTable dt = null;
  MySqlDataAdapter mda = null;
  try
  {
  mda = new MySqlDataAdapter(sql, m_conn);
  dt = new DataTable();
  mda.Fill(dt);
  }
  catch { }
  return dt;
}

现在有 sql 语句 insert into person vaules ('12345678', '张三丰')  
当我在 mysql command line client 输入并执行完毕后,在mysql command line client下查询 select * from person 的结果能够显示中文
但是我如果在程序中调用 ExecuteNonQuery(sql) ,在mysql command line client下查询 select * from person 的结果,名字一列是乱码的
还有包含中文,我在程序调用 DataTable ExecuteQuery(string sql) 得到的结果也是乱码的

mysql> select * from customer;
+----------+--------+
| id | name | 
+----------+--------+
| 12345678 | 张三丰 | 
+----------+--------+
1 row in set (0.00 sec)

mysql> show variables like "char%";
+--------------------------+----------------------------------------------------
-----+
| Variable_name | Value
  |
+--------------------------+----------------------------------------------------
-----+
| character_set_client | latin1
  |
| character_set_connection | latin1
  |
| character_set_database | latin1
  |
| character_set_filesystem | binary
  |
| character_set_results | latin1
  |
| character_set_server | latin1
  |
| character_set_system | utf8
  |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.5\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
8 rows in set (0.00 sec)


请教一下高手们应该怎么解决这个问题

作者: humanpally   发布时间: 2011-12-02

在C#查询前先执行一下SQL语句 set names 'gbk'; 试一下。如果没问题,则可以在连接字符串中设置连接的字符集。


http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码

作者: ACMAIN_CHM   发布时间: 2011-12-02

http://dev.mysql.com/doc/refman/5.1/zh/charset.html

作者: yq510457   发布时间: 2011-12-02

执行语句前 set names gbk试试

作者: rucypli   发布时间: 2011-12-02