前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >创建不带BOM 的UTF8

创建不带BOM 的UTF8

作者头像
林德熙
发布2018-09-18 17:21:08
1.7K0
发布2018-09-18 17:21:08
举报
文章被收录于专栏:林德熙的博客林德熙的博客

如果使用 StreamWriter 创建的文本,都是默认带 BOM ,如果需要创建一个不带BOM的文件,请看本文。

因为有很多个编码,打开一个文件,很难判断这个文件是什么编码。所以微软就在文件的开始写入4个byte,来告诉程序这个文件是什么格式。需要知道,这个 BOM 是微软定义的,所以在很多的系统是没有 BOM 的,所以保存了一个 xml 文件,可以在其他系统读取就出错了,他们不知道 BOM 。

下面就来提供一个简单的方法创建不带 BOM 的文件。因为和编码有关系,所以只需要替换 StreamWriter 的编码就会好了,下面提供两个方法创建编码。

  Encoding utf8WithoutBom = new UTF8Encoding(false);
  Encoding isoLatin1Encoding = Encoding.GetEncoding("ISO-8859-1");

建议使用第一个方法,创建编码就可以开始写文件

下面是把 GBK 编码的文件读取然后转换为 UTF8 的代码,代码可以直接运行,当然需要修改文件为自己的文件。

       static void Main(string[] args)
        {
            var file = new FileInfo("E:\\博客\\创建不带BOM 的UTF8.txt");
            string str = "";
            using (StreamReader stream = new StreamReader(file.FullName, Encoding.GetEncoding("GBK")))
            {
                str = stream.ReadToEnd();
            }

           Encoding utf8WithoutBom = new UTF8Encoding(false);
            using (StreamWriter stream = new StreamWriter(file.FullName, false, utf8WithoutBom))
            {
                stream.Write(str);
            }
        }

参见:http://stackoverflow.com/questions/2502990/create-text-file-without-bom


本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档