asp.net连接MySQL及中文乱码问题解决
2010-11-22 11:34 ☆冷枫☆ 阅读(2358) 评论(1) 编辑 收藏 举报近段时间公司网站架构需调整,需要将以前一部分网站使用的MSSQL替换成MYSQL,因一直在使用MSSQL所以尝试了下使用MYSQL,感觉用起来和sql区别不是很大。当然,在尝试的过程中也遇到了一些问题,主要表现在读取DB出来的中文数据乱码,搜索整理了一些资料问题得以解决。
ASP.NET连接MySQL需要一个组件(.net本身不提供访问MySQL的驱动)MySQL.Data.Dll,此为官方提供(该组件是C#开发,开源的),有多个版本选择,采用的数据访问模式为ADO.NET,访问方式和asp.net访问sqlserver很像,下面是测试demo:
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目录中引用即可,也可以从https://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文件,但我尝试了一下均未能解决上述问题,通过上面的方法方可解决不知何故。
励志博客园--优秀的阅读、励志、交流学习平台。您的网上心灵家园!