asp.net连接MySQL及中文乱码问题解决

      近段时间公司网站架构需调整,需要将以前一部分网站使用的MSSQL替换成MYSQL,因一直在使用MSSQL所以尝试了下使用MYSQL,感觉用起来和sql区别不是很大。当然,在尝试的过程中也遇到了一些问题,主要表现在读取DB出来的中文数据乱码,搜索整理了一些资料问题得以解决。  

  ASP.NET连接MySQL需要一个组件(.net本身不提供访问MySQL的驱动)MySQL.Data.Dll,此为官方提供(该组件是C#开发,开源的),有多个版本选择,采用的数据访问模式为ADO.NET,访问方式和asp.net访问sqlserver很像,下面是测试demo:  

   string  query  =   " select * from mytable " ;
            MySqlConnection myConnection 
=   new  MySqlConnection( " Persist Security Info=False;database=protest;server=localhost;Connect Timeout=30;user id=root;pwd=beyond " );                
            MySqlCommand myCommand
= new  MySqlCommand(query,myConnection);      
            myConnection.Open();      
            myCommand.ExecuteNonQuery();       
            MySqlDataReader myDataReader 
=  myCommand.ExecuteReader();    
            
string  str = "" ;     
            
while  (myDataReader.Read() == true )      
            {            
                str
+= myDataReader[ " id " ];
                str 
+=  Convert.ToString(myDataReader[ " username " ]);    
                str 
+= Convert.ToString(myDataReader[ " ulike " ]);     
            }       
            myDataReader.Close();  
            myConnection.Close();
            Response.Write(str);

 

注:MYSQL创建数据库以及表的过程省略,这里默认已经存在库和表数据了。

使用的MySQL.Data.Dll组件可以在http://dev.mysql.com/get/Downloads/Connector-Net/mysql-connector-net-5.0.6.zip/from/pick  这里下载,安装完毕后在Binaries\.NET 2.0目录中将该组件copy到项目bin目录中引用即可,也可以从http://files.cnblogs.com/zzxbest/mysql-connector-net-5.0.6.zip 这里点击下载获取。

      读取MYSQL中文数据乱码问题:    

        1.MYSQL中的数据是这样的:

       
        包含“旅游”、“爬山”两个中文选项内容。用上面的代码读取处理后内容乱码了,具体的乱码信息就不贴出来了,直接贴解决方案吧。

       2.解决方案:       

   // 读出时进行转换
     public   string  ISO8859_GB2312( string  read)
    {
        
// 声明字符集
        System.Text.Encoding iso8859, gb2312;
        
// iso8859
        iso8859  =  System.Text.Encoding.GetEncoding( " iso8859-1 " );
        
// 国标2312
        gb2312  =  System.Text.Encoding.GetEncoding( " gb2312 " );
        
byte [] iso;
        iso 
=  iso8859.GetBytes(read);
        
// 返回转换后的字符
         return  gb2312.GetString(iso);
    }

 

    即读取数据库数据是把编码进行一下转换操作即可。网上也有相关的资料说可以通过在连接字符串中添加编码;charset=gb2312方式或修改my.ini文件,但我尝试了一下均未能解决上述问题,通过上面的方法方可解决不知何故。

 

 

转载于:https://www.cnblogs.com/zzxbest/archive/2010/11/22/1883967.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值