当前位置:编程学习 > C#/ASP.NET >>

关于streamreader一个奇怪的问题!

    我导出一个txt文件用   stream.WriteLine()  导出的     当我用streamReader 在读入的时候就乱码了     但是只要我手工打开txt文件任意的删除或添加任意什么字符  在导入就好了!  非常的奇怪   帮我看一下吧! 大家  谢谢!

这里是导出的代码    

  SqlDataReader Mydr;
            try
            {
                folderBrowserDialog1.ShowDialog();
                StreamWriter sw = File.CreateText(folderBrowserDialog1.SelectedPath.ToString() + "\\学生信息.text");
                Mydr = Bc.process_sqldr("select s_number,s_name,department,class,flag from 考生");
                while (Mydr.Read())
                {
                    sw.WriteLine(Mydr["s_number"] +" "+ Mydr["s_name"] + " " + Mydr["department"] + " " + Mydr["class"]+" "+Mydr["flag"]);
                }
                sw.Flush();
                sw.Close();
                MessageBox.Show("成功导出!","提示");               
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }


导入的代码 


            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string[] NewValue = new string[5];
                string      value;


                try
                {
                    FileStream fs = new FileStream(openFileDialog1.FileName, FileMode.Open, FileAccess.Read);
                    StreamReader reader = new StreamReader(fs, Encoding.Default);

                    while(reader .Peek()!=-1) //没有完成
                    {
                        value=reader.ReadLine();
                        NewValue = value.Split(' ');

                    DataRow NewRow = Myds.Tables["学生"].NewRow();
                    NewRow["考号"] = NewValue[0];
                    NewRow["姓名"] = NewValue[1];
                    NewRow["系部"] = NewValue[2];
                    NewRow["班级"] = NewValue[3];
                    NewRow["标示"] =NewValue[4];
                    Myds.Tables["学生"].Rows.Add(NewRow);

                    }               

                }


                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

  希望高手指点一下

--------------------编程问答-------------------- Encoding.Default 这个东西换换别的,比如UTF8之类的 --------------------编程问答--------------------   File.CreateText(folderBrowserDialog1.SelectedPath.ToString() + "\\学生信息.text",); 
创建的streamwriter是按照utf-8的格式写的
你改一下读的时候的编码格式
StreamReader reader = new StreamReader(fs, Encoding.UTF8); 


不成就
FileStream s=new FileStream(folderBrowserDialog1.SelectedPath.ToString() + "\\学生信息.text",FileMode.Create);
StreamWriter w=new StreamWriter(s,Encoding.Default);
然后再写 --------------------编程问答--------------------

folderBrowserDialog1.Filter = "Files(*.txt)|*.txt|All Files(*.*)|*.*"; 
//弱弱的问下,NewValue = value.Split(' '); 你的这句代码能通过吗?
--------------------编程问答-------------------- 好了O 谢谢!  不用我很想问一问   用,Encoding.Default   为什么不可以用?     而且  我打开了  做一点点内容上的改动就可以了???/ --------------------编程问答-------------------- 兄弟 可以行的通!  --------------------编程问答-------------------- up --------------------编程问答--------------------
引用 4 楼 zhulupeng 的回复:
好了O 谢谢!  不用我很想问一问   用,Encoding.Default   为什么不可以用?     而且  我打开了  做一点点内容上的改动就可以了???/


自动更正? --------------------编程问答-------------------- ,Encoding.Default   
这种方式没问题 --------------------编程问答-------------------- 同意楼上的第二种方法,读写都明确指定成相同的编码,应该就不会有问题了吧 --------------------编程问答-------------------- 我知道!   我用  Encoding.Default  读取进来的中文就是一些不认识的字     
  不过,我把文本  手工打开    然后  改动内容  就算是打入空格也可以    在读取   就成功了!  我非常的奇怪
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,