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即可。

  • 相关阅读:
    在线jq库
    解决python3.6的UnicodeEncodeError: 'gbk' codec can't encode character 'xbb' in position 28613: illegal multibyte sequence
    PHP后台支付的开发:微信支付和支付宝支付
    PHP操控Excel视频教程
    微信h5静默、非静默授权获取用户openId的方法和步骤
    OAuth2.0微信网页授权登录
    微信第三方登录 -- (PC端+移动端)
    web字体规范
    移动端字体设置
    在 Web 内容中使用系统字体
  • 原文地址:https://www.cnblogs.com/SCscHero/p/14530845.html
Copyright © 2011-2022 走看看