zoukankan      html  css  js  c++  java
  • 解决C#中txt文档导入数据库时,中文显示乱码的问题

    与前篇文章不同之处用红笔标记

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using System.Data.SqlClient;

    namespace txt导入至数据库
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            public static System.Text.Encoding GetFileEncoding(string fileFullName)
            {
                FileStream fs = new FileStream(fileFullName, FileMode.Open, FileAccess.Read);
                System.Text.Encoding r = GetType(fs);
                fs.Close();
                return r;
            }


            public static System.Text.Encoding GetType(FileStream fs)
            {
                /*
                 * byte[] Unicode=new byte[]{0xFF,0xFE}; 
                 * byte[] UnicodeBIG=new byte[]{0xFE,0xFF}; 
                 * byte[] UTF8=new byte[]{0xEF,0xBB,0xBF};
                 */

                BinaryReader r = new BinaryReader(fs, System.Text.Encoding.Default);
                byte[] ss = r.ReadBytes(3);
                r.Close();
                //编码类型 Coding=编码类型.ASCII;  
                if (ss[0] >= 0xEF)
                {
                    if (ss[0] == 0xEF && ss[1] == 0xBB && ss[2] == 0xBF)
                    {
                        return System.Text.Encoding.UTF8;
                    }
                    else if (ss[0] == 0xFE && ss[1] == 0xFF)
                    {
                        return System.Text.Encoding.BigEndianUnicode;
                    }
                    else if (ss[0] == 0xFF && ss[1] == 0xFE)
                    {
                        return System.Text.Encoding.Unicode;
                    }
                    else
                    {
                        return System.Text.Encoding.Default;
                    }
                }
                else
                {
                    return System.Text.Encoding.Default;
                }
            }
            private void button1_Click(object sender, EventArgs e)
            {
                if (ofdfile.ShowDialog() == DialogResult.OK)
                {
                   using (FileStream fileStream=File.OpenRead(ofdfile.FileName))
                   {
                      Encoding readEncoding = GetFileEncoding(ofdfile.FileName);

                     
                    using (StreamReader streamreader = new StreamReader(fileStream,readEncoding))
                    {
                       
                        using (SqlConnection conn = new SqlConnection("server=.;database=test;user id=sa;password=123456"))
                        {
                            conn.Open();
                            string lines = null;
                            using (SqlCommand cmd = conn.CreateCommand())
                            {
                                cmd.CommandText = "insert into T_persons(name,age)values(@name,@age)";
                              
                                while ((lines=streamreader.ReadLine()) != null)
                                {
                              
                                    string[] strs = lines.Split('|');
                                    string name = strs[0].ToString();
                                    int age = Convert.ToInt32(strs[1]);
                                    cmd.Parameters.Clear();
                                    cmd.Parameters.Add(new SqlParameter("name",name));
                                    cmd.Parameters.Add(new SqlParameter("age",age));
                                    cmd.ExecuteNonQuery();
                                   
                                }
                            }

                        }
                    }
                    }
                   MessageBox.Show("数据导入成功");

                }
            }
        }
    }

  • 相关阅读:
    记支付宝接口对接,涉及到提取证书SN号的解决方案
    Second Level Cache for Entity Framework 6.1
    记一个dynamic的坑
    使用EntityFramwork[6.1]进行级联保存的时候出现异常
    转:Transform Web.Config when Deploying a Web Application Project
    转:程序员如何增加收入
    超实用的JavaScript技巧及最佳实践(下)
    超实用的JavaScript技巧及最佳实践(上)
    Oracle PL/SQL入门语法点
    轻量级IOC框架:Ninject (下)
  • 原文地址:https://www.cnblogs.com/agile2011/p/2058242.html
Copyright © 2011-2022 走看看