解決導入中文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")))