解決導入中文SQL數據亂碼問題


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM