问题描述;
1.C# Winform 连接MYSQL
对MySQL进行新增,读取数据操作,使用Mysql.MySql.Data组件进行数据连接及操作
2.mysql的版本本较低4.01
不能对Mysql的环境进行配置
来源:http://www.dezai.cn/blog/article.asp?id=418
现象:
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);
}
来源:http://www.dezai.cn/blog/article.asp?id=418