C# Winform 使用 MYSQL 新增,读取数据乱码问题

这个问题可终于解决了,搞了近一天的时间,汗.记录并分享一下解决办法.

问题描述;
1.C# Winform 连接MYSQL 对MySQL进行新增,读取数据操作,使用Mysql.MySql.Data组件进行数据连接及操作
2.mysql的版本本较低4.01 不能对Mysql的环境进行配置
现象:
1.新增数据正常操作,但是插入MYSQL数据库中的对应表中的数据成问号形式



2.Mysql表中中文数据显示正常,但通过datagridview读取显示?号

解决过程

1.在mysql 4.0.1的版本使用set names 'gb2312'这种语句是行不通的,同样去更改所对应的表的字段或字符集好像也是不起作用,5.0以上的版本没有使用过,所以不能提供正常说法,可以尝试一下

mysql修改表、字段、库的字符集 

http://www.dezai.cn/Channel/Code/Detail.aspx?CodeID=d3401000-2abd-4654-be6f-aa7c65c64ff1


2.在连接mysql的字符串加上Character Set=utf8或charset=gb2312 应该还是有作用的.


      public static readonly string strSMS = "Data Source=188.28.1.36;user id=sale;password=sale;database=mas;Character Set=utf8;"


3.如果是B/S模式,可以尝试将页面另存为UTF-8格式,或ANSI格式

4.以下这两个方法解决我的这个大问题,感谢!



//写入数据库时进行转换  
      public   string    GB2312_ISO8859(string    write)  
      {  
        //声明字符集  
         System.Text.Encoding    iso8859,    gb2312;  
        //iso8859  
         iso8859   =    System.Text.Encoding.GetEncoding("iso8859-1");  
        //国标2312  
         gb2312   =    System.Text.Encoding.GetEncoding("gb2312");  
        byte[]    gb;  
         gb   =    gb2312.GetBytes(write);  
        //返回转换后的字符  
        return    iso8859.GetString(gb);  
       }  

//读出时进行转换  
      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);  
       }




上一篇: C#连接MySQL 问题集锦及解决方案
下一篇: 信息化:IT改变企业未来
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 读取数据乱码
相关日志:
评论: 0 | 引用: 0 | 查看次数: 16032
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 30 字 | UBB代码 关闭 | [img]标签 关闭