创建不带BOM 的UTF8

如果使用 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


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏行者常至

idea new web project maven jetty

0.转载自http://blog.csdn.net/qwdafedv/article/details/79448332

14010
来自专栏Python

centos7修改系统语言为简体中文

说明 自己装系统时一般都可以自定义选择系统语言。可是云端服务器一般都是安装好的镜像,默认系统语言为英文,对于初学者可能还会有搞不懂的计算机词汇。这里简单说一下c...

59560
来自专栏破晓之歌

python3中报错的解决方法(长期更新) 原

出错原因:安装DjangoUeditor库适用于python2,需要下载适用python3的

15620
来自专栏向治洪

Myeclipse Db Browser使用

1.打开Myeclipse,选择菜单栏Window-->Show View-->Other,展开MyEclipse Database,选择DB Browser,...

22550
来自专栏Nian糕的私人厨房

WebPack 模块化打包工具(下)

本篇博文的内容根据 入门 Webpack,看这篇就够了 该篇文章总结而来,其代码、模块示例、功能拓展部分均有所删减,若是想了解更多关于 WebPack 的详细内...

45450
来自专栏跟着阿笨一起玩NET

MySql可视化工具MySQL Workbench使用教程

MySQL Workbench 为数据库管理员、程序开发者和系统规划师提供可视化的Sql开发、数据库建模、以及数据库管理功能。

1.4K00
来自专栏移动端周边技术扩展

UniversalLink Associated Domains

26230
来自专栏Youngxj

Html5 Canvas多表盘时钟绘制

18840
来自专栏程序员的碎碎念

Fastadmin了解一下??

详见开发文档:https://doc.fastadmin.net/docs/index.html

1.4K10
来自专栏Ken的杂谈

Grafana快速入门:InfluxDB数据源以及曲线图表仪表盘配置

Grafana默认支持的数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch

2.1K30

扫码关注云+社区

领取腾讯云代金券