我正在阅读一个简单的文本文件,其中包含使用文件流类的单行。但它似乎filestream.read在一开始prepends一些垃圾字符。文件流预读垃圾字符,同时阅读
下面的代码。
using (var _fs = File.Open(_idFilePath, FileMode.Open, FileAccess.ReadWrite, FileShare.Read))
{
byte[] b = new byte[_fs.Length];
UTF8Encoding temp = new UTF8Encoding(true);
while (_fs.Read(b, 0, b.Length) > 0)
{
Console.WriteLine(temp.GetString(b));
Console.WriteLine(ASCIIEncoding.ASCII.GetString(b));
}
}
例如:我在文本文件中的数据仅仅是“样品”。但上面的代码返回
"?sample" and
"???sample"
是什么原因?它是文件指示符的开始吗?有没有办法只读我的实际内容?
我在文本文件中的数据仅仅是“样品” < - 你肯定没有它的UTF8 BOM盈?用十六进制编辑器检查它。 – CodesInChaos 2010-11-13 10:12:49
@CodeInChaos,感谢提示,在十六进制编辑它看起来“ef bb bf 73 61 6d 70 6c 65 00 and ... sample”。这是为什么..... – RameshVel 2010-11-13 10:15:58
如果你需要去掉BOM,你已经做错了。请参阅http://stackoverflow.com/questions/1317700/strip-byte-order-mark-from-string-in-c。 – 2010-11-13 10:17:42