日期:2014-05-18  浏览次数:20869 次

文件读取和编码的问题,总是不不能读取文件最开始的两个字节(50分)。
由于要判断文件的编码,所以需要读取文件的最开始的几个字节,
如UTF8编码的文本文件的最开始的两个字节是 FF FE

我有一个UTF8文件 FF FE 2F 00 2A 00 0D 00 .......(使用UtralEdit查看出来的)

在C#程序中,使用如下代码读取
FileStream fs = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read);
BinaryReader r = new BinaryReader(fs,System.Text.Encoding.Unicode);
byte[] ss = r.ReadBytes(3);

发现ss中是2F,2A,0D三个数字,而最前面的FFEE并没有获取到,不知道怎么回事。

敢请大侠们出招相助。

先谢了

------解决方案--------------------
BinaryReader r = new BinaryReader(fs,System.Text.Encoding.Unicode);
你都自己指定了Unicode编码,FF FE当然被BinaryReader忽略了。

你这样试试看:
C# code

  FileStream fs = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read); 
  byte[] header;
  fs.Read(header, 0, 2);

------解决方案--------------------
顶了先
------解决方案--------------------
你不能先编码再读。