• 如何使用带有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技术控   获取更多资讯

  • 相关阅读:
    Centos 端口被占用,kill被占用的进程
    Centos7 docker安装GitLab
    MongoDB 3.6.1集群部署
    MySql时区修改
    Springboot默认定时任务——Scheduled注解
    Nacos Docker集群部署
    docker-compose使用
    docker部署redis集群
    设置Redis集群访问密码(不停机设置)
    AWS SNS 创建 订阅 发布
  • 原文地址:https://www.cnblogs.com/lyl6796910/p/13959540.html
Copyright © 2020-2023  润新知