我只是在做这个:
using (var f = File.Open("File.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
using (var sw = new StreamWriter(f, Encoding.ASCII))
{
sw.WriteLine("Test");
}
}
using (var f = File.Open("File.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
using (var sr = new StreamReader(f, detectEncodingFromByteOrderMarks: true))
{
var r = sr.ReadLine();
var e = sr.CurrentEncoding;
//e = UTF8Encoding ???????? !!!!!
}
}
为什么流没有正确检测到编码?
请参阅StreamReader.CurrentEncoding 上的MSDN链接
在第一次调用StreamReader的任何Read方法之后,该值可能不同,因为直到第一次调用Read方法才进行编码自动检测。
我找到了
来自MSDN:
detectEncodingFromByteOrderMarks参数通过查看流的前三个字节。它自动识别UTF-8、小端Unicode和大端Unicode文本如果文件以适当的字节顺序标记开始。否则使用UTF8Encoding。有关详细信息,请参阅Encoding.GetPreamble方法信息