我用 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 都是乱码。不知道什么原因!!!那位大侠帮帮忙啊!!!

解决方案 »

  1.   

    数据保存的时候用nvarchar类型
      

  2.   

    对于乱码一般使用Nchar、nvarchar、ntext(后续版本不建议使用),存储、读取的时候加上N,比如insert into  a values(N'abc')这样格式,读取的时候可以不用,但是如果使用了临时表,那么临时表的字段类型也要设为N开头的那些。
      

  3.   

    MySql 里面哪有nvarchar、ntext???
      

  4.   

    show variables like 'char%' ;
    贴出结果来看看。
      

  5.   

    看要什么结果?  查询出来的都是乱码。我用navicat数据库管理工具 看,里面的中文都能正常显示。就是c# 查询出来的是乱码, 我一步步调试的, command.SelectCommand.CommandText=SQLString;
      command.Fill(ds, "ds");
    执行后,ds里面的中文就是乱码了!!
      

  6.   

    查询出来是这个!
    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         D:\phpcs\MySQL-5.0.90\share\charsets\
      

  7.   


    哦 你这个建议在MY.INI文件里面把
    default-character-set=utf8
    character-set-server=utf8重启服务再试试
      

  8.   

    我在MY.INI里面没有看到有这个啊!!!
    default-character-set=utf8
    character-set-server=utf8
      

  9.   

    已经加入了,依然是乱码 
     
    查询结果如下:
    show variables like 'character_set_%';character_set_client latin1
    character_set_connection latin1
    character_set_database utf8
    character_set_filesystem binary
    character_set_results latin1
    character_set_server utf8
    character_set_system utf8
    character_sets_dir D:\phpcs\MySQL-5.0.90\share\charsets\
    show variables like 'character%';character_set_client latin1
    character_set_connection latin1
    character_set_database utf8
    character_set_filesystem binary
    character_set_results latin1
    character_set_server utf8
    character_set_system utf8
    character_sets_dir D:\phpcs\MySQL-5.0.90\share\charsets\
    show variables like 'collation%';
    collation_connection latin1_swedish_ci
    collation_database utf8_general_ci
    collation_server utf8_general_ci