在通过程序生成文本文件时,发现Windows下的记事本读取乱码,其他第三方工具完成没有问题。
调查后发现是由于UTF8编码的文本文件需要添加BOM信息。通过相关资料显示,在没有BOM信息的
情况下,记事本应该能自动判定,但是某些情况下确实出现了很糟糕的情况。所以如果输出文件是用于windows记事本读取的,
添加BOM会比较有效。
var sb = new StringBuilder();
var ms = new MemoryStream();
var bs = Encoding.UTF8.GetBytes(sb.ToString());
ms.Write(new byte[]{239,187,191,},0,3 );//UTF-8格式文件的BOM写入,针对Windows下的记事本读取
ms.Write(bs,0,bs.Length);//文本正文写入