比如我新建C:\test.txt,输入“新建”两个字,用UE查看十六进制编码为"D0 C2 BD A8"。然后我测试了下面代码
StreamReader sr=new StreamReader(@"C:\test.txt",System.Text.Encoding.GetEncoding("GB2312"));
string data=sr.ReadToEnd();
sr.Close();
FileStream sb = new FileStream(@"c:\output.txt",FileMode.Append);
StreamWriter sw = new StreamWriter(sb);
sw.Write(data);
sw.Close();c:\output.txt中也显示“新建”两个字。但是查看c:\output.txt的十六进制,变成了"FF FE B0 65 FA 5E",怎么才能让两个文件完全一致呢?

解决方案 »

  1.   

    UTF-8 编码
      
    --------------------------------------------------------------
    程序,犹如人生。
      

  2.   

    开头的十六进制编码表示编码方式(encoding)。
      

  3.   

    c:\output.txt应该是aci编码吧,到c:\output.txt好像变成了Unicode的。现在的问题是怎么能让两个文件完全一致?
      

  4.   

    try..StreamReader sr=new StreamReader(@"C:\test.txt",System.Text.Encoding.Default);
      

  5.   

    liujia_0421(SnowLover):
    我试过你说的方法,和System.Text.Encoding.GetEncoding("GB2312")一样,output.txt也是"FF FE B0 65 FA 5E"
      

  6.   

    try..StreamReader sr=new StreamReader(@"C:\test.txt",System.Text.Encoding.GetEncoding("GB2312"));->>StreamReader sr = new StreamReader(new FileStream(@"C:\test.txt", FileMode.Open), System.Text.Encoding.Default);试下吧,我也不是很清楚...
      

  7.   

    liujia_0421(SnowLover) 结果还是一样撒...不过仍然谢谢你的帮助!
      

  8.   

    可以了,问题在StreamWriter,我之前试了它的各种编码,唯独漏了正确的那个。
    StreamWriter sw = new StreamWriter(sb,System.Text.Encoding.Default);
    感谢大家的关注,尤其是liujia_0421(SnowLover),分不多,略表心意^0^