百度进军烧烤市场

Filed Under (闲时随笔) by 刘 鹏 on 26-12-2007



  今天在回家的路上发现了一家百度烤肉,看来百度已经进军中国的烧烤市场,嗯,很好,很强大

System.IO.StreamWriter写UTF-8文件不写BOM

Filed Under (闲时随笔) by 刘 鹏 on 22-12-2007

Q: What is a BOM?

A: UTF-8 编码的文件可以分为no BOM 和 BOM两种格式。

何谓BOM? "EF BB BF" 这三个字节就叫BOM,BOM的全称叫做"Byte Order Mard".在utf-8文件中常用BOM来表明这个文件是UTF-8文件,而BOM的本意实在utf16中用来表示高低字节序列的。

在字节流之前有BOM表示采用低字节序列(低字节在前面),而utf8不用考虑字节序列,所以其实有无BOM都可以。



  前几天写了个项目开发的辅助工具,发现用System.IO.StreamWriter写的UTF-8 文件都有BOM,编码规范中规定不能包含BOM的,折腾了半天,后来找到了个解决方案, 只需要重写UTF8Encoding.GetPreamble方法,返回值是一个空的字节数组就OK ,代码如下:

public class UTF8EncodingNoPreamble : System.Text.UTF8Encoding

 {

        public override byte[] GetPreamble()

        {

            return new byte[0];

        }

}