gpt4 book ai didi

asp.net-mvc - 如何在 C# 中使用带有 BOM 的 UTF8 编码 GetBytes()?

转载 作者:行者123 更新时间:2023-12-01 19:59:01 27 4
gpt4 key购买 nike

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

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

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

返回文件(x, ..., ...);

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

我还尝试创建 UTF8Encoding 类实例并将 bool 值 (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");
}

原因是采用 bool 参数的 UTF8Encoding 构造函数没有执行您期望的操作:

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

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

关于asp.net-mvc - 如何在 C# 中使用带有 BOM 的 UTF8 编码 GetBytes()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4414088/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com