关于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);
然后再写 --------------------编程问答--------------------
--------------------编程问答-------------------- 好了O 谢谢! 不用我很想问一问 用,Encoding.Default 为什么不可以用? 而且 我打开了 做一点点内容上的改动就可以了???/ --------------------编程问答-------------------- 兄弟 可以行的通! --------------------编程问答-------------------- up --------------------编程问答--------------------
folderBrowserDialog1.Filter = "Files(*.txt)|*.txt|All Files(*.*)|*.*";
//弱弱的问下,NewValue = value.Split(' '); 你的这句代码能通过吗?
自动更正? --------------------编程问答-------------------- ,Encoding.Default
这种方式没问题 --------------------编程问答-------------------- 同意楼上的第二种方法,读写都明确指定成相同的编码,应该就不会有问题了吧 --------------------编程问答-------------------- 我知道! 我用 Encoding.Default 读取进来的中文就是一些不认识的字
不过,我把文本 手工打开 然后 改动内容 就算是打入空格也可以 在读取 就成功了! 我非常的奇怪
补充:.NET技术 , C#