zoukankan      html  css  js  c++  java
  • C#·对于BOM头之完全解决方案

    阅文时长 | 0.46分钟 字数统计 | 798.4字符
    主要内容 | 1、引言&背景 2、使用C#写入带有/不带有BOM头的文件? 3、对于读取文件时,避免BOM头造成的异常。 4、声明与参考资料
    『C#·对于BOM头之完全解决方案』
    编写人 | SCscHero 编写时间 | 2021/3/13 PM10:38
    文章类型 | 系列 完成度 | 待完善
    座右铭 每一个伟大的事业,都有一个微不足道的开始。

    一、引言&背景   完成度:100%

    a) 应对问题

    1. 如何使用C#写入带有/不带有BOM头的文件?
    2. 如何使用C#判断文件是否有BOM头?

    b) 应用场景

    1. 处理BOM头的文件。
    2. 对于读取文件时,避免BOM头造成的异常。

    c) 预备知识

    1. 需要了解 BOM头是什么?

    二、使用C#写入带有/不带有BOM头的文件?   完成度:100%

    使用有参构造函数,来确定是否使用BOM头。如下代码:

                var utf8WithoutBom = new System.Text.UTF8Encoding(false);//使用构造函数布尔参数指定是否含BOM头,示例false为不含。
                var utf8WithBom = new System.Text.UTF8Encoding(false);//使用构造函数布尔参数指定是否含BOM头,示例true为含。
                using (var sink = new StreamWriter("WithoutBom.txt", false, utf8WithoutBom))
                {
                    sink.WriteLine("Hello,SCscHero");
                }
                using (var sink = new StreamWriter("WithBom.txt", false, utf8WithBom))
                {
                    sink.WriteLine("Hello,SCscHero");
                }
    

    三、对于读取文件时,避免BOM头造成的异常。   完成度:100%

    根据BOM头的特性,我们可以使用判断字节流的方式。如下代码:

                var fileByte = System.IO.File.ReadAllBytes(@"TestBom.txt");
                var isBom = isBomHeader(fileByte);
                Console.WriteLine("是否含有Bom头:{0}",isBom);
    

    可以将判断是否是BOM头的代码封装成一个公用方法,如下代码:

            public static bool isBomHeader(byte[] bs)
            {
                int len = bs.Length;
                if (len >= 3 && bs[0] == 0xEF && bs[1] == 0xBB && bs[2] == 0xBF)
                {
                    return true;
                }
                return false;
            }
    

    四、声明与参考资料   完成度:100%

    原创博文,未经许可请勿转载。

    如有帮助,欢迎点赞、收藏、关注。如有问题,请评论留言!如需与博主联系的,直接博客私信SCscHero即可。

  • 相关阅读:
    管理上第一是用人
    意义只存在于关系中,由其定义
    苦与累在希望面前啥也不是
    人是一切,组织是一切
    UI设计
    以理服人需要什么?
    灵活性是原则性基础上的灵活
    软件行业深层的文化属性
    自然原始分工
    把一个系统维护好需要做哪些工作?
  • 原文地址:https://www.cnblogs.com/SCscHero/p/14530845.html
Copyright © 2011-2022 走看看