using(StreamWriter sw = File.CreateText(@"d:DefaultUTF8.txt"))
{
sw.Write("私");
}
using(StreamWriter sw=new StreamWriter(@"d:StreamUTF8.txt",
false,System.Text.Encoding.UTF8))
{
sw.Write("私");
}
using (System.IO.FileStream fs = System.IO.File.Create(@"d:ByteUTF8.txt"))
{
byte[] info = System.Text.Encoding.UTF8.GetBytes("私");
fs.Write(info, 0, info.Length);
}
一直以來,我認為上面三種方式的結果是一樣的沒有差別,今天才知道不是那麼回事呵呵,覺得這個問題比較幼稚的可以不必往下看了
運行結果1、3是一樣的,都是E7 A7 81
而2會多出一個ZERO WIDTH NO-BREAK SPACE,也就是EF BB BF
當我們需要透過Byte Order Mark來標示該文件的編碼方式的時候,請使用方法2
以上同樣適用於標明Big-Endian和Little-Endian的UNICODE
http://www.cnblogs.com/jjstar/archive/2006/12/18/595812.html