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

问题描述;
1.C# Winform 连接MYSQL 对MySQL进行新增,读取数据操作,使用Mysql.MySql.Data组件进行数据连接及操作
2.mysql的版本本较低4.01 不能对Mysql的环境进行配置

来源:http://www.dezai.cn/blog/article.asp?id=418


现象:
1.新增数据正常操作,但是插入MYSQL数据库中的对应表中的数据成问号形式

C# Winform 使用 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);
}
来源: http://www.dezai.cn/blog/article.asp?id=418

你可能感兴趣的:(WinForm)