日期:2014-05-17  浏览次数:20523 次

ASP.net 读取MySql 数据出现中文乱码!
我用 navicat 在管理数据库,之前没有设置 编码的时候 navicat 表中的中文都是????? 后来在 连接属性-高级-(去掉)MySql字符集(上面的编码是utf-8) 中文就可以显示了。

但是我的asp.net WEB 程序连接MySql获取到的数据 ,中文还是乱码!

网上查询了下,说在 连接数据库的地方 加入 Charset=utf8
例如:
server=localhost;database=b2bdata;uid=root;pwd=123456;Charset=utf8

测试了以下依然是乱码 ,换成gb2312 也不行。。


后来又在网上看到一篇,在查询数据的地方加入 set names utf8

例如:
C# code

 public static DataSet Query(string SQLString)
  {
  using (MySqlConnection connection = new MySqlConnection(connectionString))
  {
  DataSet ds = new DataSet();
  try
  {
  connection.Open();
  //MySqlDataAdapter command = new MySqlDataAdapter(SQLString, connection);
  MySqlDataAdapter command = new MySqlDataAdapter("set names utf8", connection);
  command.SelectCommand.CommandText=SQLString;
  command.Fill(ds, "ds");
  }
  catch (MySqlException ex)
  {
  throw new Exception(ex.Message);
  }
  return ds;
  }
  }




测试了以下 不管是utf8 还是 gb2312 都是乱码。不知道什么原因!!!

那位大侠帮帮忙啊!!!

------解决方案--------------------
数据保存的时候用nvarchar类型
------解决方案--------------------
对于乱码一般使用Nchar、nvarchar、ntext(后续版本不建议使用),存储、读取的时候加上N,比如insert into a values(N'abc')这样格式,读取的时候可以不用,但是如果使用了临时表,那么临时表的字段类型也要设为N开头的那些。
------解决方案--------------------
show variables like 'char%' ;
贴出结果来看看。
------解决方案--------------------
探讨
查询出来是这个!


SQL code

character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_filesystem binary
character_set_result……

------解决方案--------------------
MY.INI文件在安装目录下
------解决方案--------------------
[mysql]
[mysqld]