安装mysql如果没有正确设置默认字符集,在写入中文数据的时候就会乱码,只要在连接MySQL时,正确地设定了字符集,无论数据库本身是使用什么格式编码的,都能得到正确的结果。也许有人会以为写数据时设定的字符集必需和读数据时一致,事实上完全没有必要。程序所要做的只是告诉 MySQL,目前操作MySQL使用的是什么字符集即可。因为MySQL会自动完成如下的转换工作:
写数据库时用的字符集-->存诸数据的字符集-->读取数据的字符集。
由此想我的问题可能是写入时声明的我的字符编码与我实际的不符,C#中字符默认编码为GB2312,于是程序改动如下:
1:在链接字符加入字符编码声明
<add key="mysqlconstr" value="UserId=root;Allow Zero Datetime=true;Charset=gb2312;Host=125.*.*.*;Database=dbname;Password=123456"/>
向mysql说明我的字符编码是gb2312, 不要搞错
2:在数据库类中每一插入数据语句前加入编码声明
cmd = new MySqlCommand("set names gb2312;"+sql,conn); cmd.ExecuteNonQuery();
期待已久的中文终于顺利写入了!