解决导入中文SQL数据乱码问题
我的第一篇博文
小弟是做.net的 ,菜鸟一名
开发环境vs2008+sql 2005
问题重现:通过ADO.NET 导入txt文件到数据库指定表格,中文数据全部变成乱码:����ʡ��ͨ��
private void button1_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK)//如果选中文件 { using (FileStream filestreams = File.OpenRead(openFileDialog1.FileName))//获得导入文件的文件名 { using (StreamReader streamereader = new StreamReader(filestreams)) {//使用 StreamReader 读取标准文本文件的各行信息, Encoding.GetEncoding("gb2312")的编码方式防止汉字乱码 string line = null; while ((line = streamereader.ReadLine()) != null) {//如果读入数据不为空 string[] strs = line.Split(','); string id = strs[0]; string name = strs[1]; string sex = strs[2]; string sfz = strs[3]; string birth = strs[4]; string syd = strs[5]; using (SqlConnection conn = new SqlConnection("server=.;database=DB1;Integrated security=true")) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = "insert into Student(学号,姓名,性别,身份证号,生日,生源地) values(@Id,@Name,@Sex,@Sfz,@Birth,@Syd);"; cmd.Parameters.Add(new SqlParameter("Id",id)); cmd.Parameters.Add(new SqlParameter("Name",name)); cmd.Parameters.Add(new SqlParameter("Sex", sex)); cmd.Parameters.Add(new SqlParameter("Sfz", sfz)); cmd.Parameters.Add(new SqlParameter("Birth", birth)); cmd.Parameters.Add(new SqlParameter("Syd", syd)); cmd.ExecuteNonQuery();
} } } } } MessageBox.Show("c"); } } }
解决方法:查了各种解决办法
最后没想到 简单的让人吐血:字符编码问题,只需把
using (FileStream filestreams = File.OpenRead(openFileDialog1.FileName))//获得导入文件
增加为
using (StreamReader streamereader = new StreamReader(filestreams,Encoding.GetEncoding("gb2312"))) |