老大好!
在使用System.IO.FileStream读取一个WORD文件时出现乱码!
System.IO.FileStream fs=File.OpenRead(MapPath("Cache/" + fileName + ".doc"));
byte[] fileB=new byte[fs.Length];
fs.Read(fileB,0,fileB.Length);
Encoding en=Encoding.GetEncoding("GB2312");
string file=en.getstring(fileB);file中是乱码StreamWriter sw=new StreamWriter(Server.MapPath("Cache/"+ fileName+"新的" + "."+dbType),false,System.Text.Encoding.GetEncoding("gb2312"));
sw.Write(file); 
sw.Flush();
sw.Close();
同样,将这个file存为word文件,这个word文件中还是乱码!
请哪位老大指点,万分感激,

解决方案 »

  1.   

    FileStream f = new FileStream(path and filename, FileMode.Create);
    StreamWriter fWrite = new StreamWriter((Stream)f,System.Text.Encoding.Unicode);
    fWrite.Write(text);
    fWrite.Flush();
    fWrite.Close();
    f.Close();如果不行就可能是语言问题,如果本地语言是汉语,就试试GBK编码
      

  2.   

    doc文件格式不是公开的。应该类似于二进制,当然不能用encoding类转换了。
      

  3.   

    对于Word文件,它跟一般的文本文件有所差别,若要读取或更改文件内容,则建议引用Microsoft Word Object库对该COM组件进行操作。
      

  4.   

    你用gb2312编码本来就错了,再用gb2312解码解出来的肯定也是乱码,.net提供了操作word的类库去查查msdn把
      

  5.   

    谢谢大家,问题已经解决!
    我的思路错误,也误导了大家,十分抱歉!
    直接存byte即可,不能转为string,word格式转为string当然出乱码!
    System.IO.FileStream fs=File.OpenRead(MapPath("Cache/" + fileName + ".doc")); 
    byte[] fileB=new byte[fs.Length]; 
    fs.Read(fileB,0,fileB.Length); StreamWriter sw=new StreamWriter(Server.MapPath("Cache/"+ fileName+"新的" + "."+dbType),false,System.Text.Encoding.GetEncoding("gb2312")); 
    sw.Write(fileB); 
    sw.Flush(); 
    sw.Close(); 
      

  6.   

    word文档可以使用FileStream吗?好像要使用Microsoft word类库吧!