• 如何使用带有BOM的UTF8编码的C#中的GetBytes()?


     

    我在C#的asp.net mvc 2应用程序中使用UTF8编码时遇到问题。我正在尝试让用户从字符串中下载一个简单的文本文件。我正在尝试使用以下行获取字节数组:

    var x = Encoding.UTF8.GetBytes(csvString);

    但是当我使用以下命令将其退回下载时:

    return File(x, ..., ...);

    我得到的文件没有BOM,所以我无法正确显示克罗地亚语字符。这是因为我的字节数组在编码后不包含BOM。我尝试手动插入这些字节,然后正确显示出来,但这不是最好的方法。

    我还尝试创建UTF8Encoding类实例,并将布尔值(true)传递给其构造函数以包含BOM,但是它也不起作用。

    尝试这样:

    public ActionResult Download()
    {
        var data = Encoding.UTF8.GetBytes("some data");
        var result = Encoding.UTF8.GetPreamble().Concat(data).ToArray();
        return File(result, "application/csv", "foo.csv");
    }
    

    原因是采用布尔型参数的UTF8Encoding构造函数无法达到您的期望:

    byte[] bytes = new UTF8Encoding(true).GetBytes("a");
    

    结果数组将包含一个值为97的单个字节。没有BOM,因为UTF8不需要BOM。

    https://stackoverflow.com/questions/4414088/how-to-getbytes-in-c-sharp-with-utf8-encoding-with-bom

    关注公众号:UP技术控   获取更多资讯

  • 相关阅读:
    通过strace 监控 fdatasync
    RAID 2.0
    AHCI vs NVMe
    NVMe 图解
    详解linux运维工程师入门级必备技能
    条带深度 队列深度 NCQ IOPS
    NVMe 与 AHCI
    IO负载高的来源定位 IO系列
    磁盘性能指标--IOPS 理论
    java程序员从笨鸟到菜鸟系列
  • 原文地址:https://www.cnblogs.com/lyl6796910/p/13959540.html
Copyright © 2020-2023  润新知