zoukankan      html  css  js  c++  java
  • 2018-5-19-创建不带BOM-的UTF8

    title author date CreateTime categories
    创建不带BOM 的UTF8
    lindexi
    2018-05-19 14:11:33 +0800
    2018-2-13 17:23:3 +0800

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

  • 相关阅读:
    C# 复制文件夹,移动文件夹
    让Base64适合在URL中使用
    修复FIREBIRD数据库
    Image.FromFile 锁文件的解决办法
    Powerbuilder 12.5 下载地址
    C# 给程序添加许可
    WIN FORM 多线程更新UI(界面控件)
    .Net WinForm 拖动控件
    SQL Server 自动增长清零
    C# 一次生成多个相同的字符
  • 原文地址:https://www.cnblogs.com/lindexi/p/12086640.html
Copyright © 2011-2022 走看看