我在 C# 中的 asp.net mvc 2 应用程序中遇到 UTF8 编码问题。我正在尝试让用户从字符串下载一个简单的文本文件。我正在尝试使用以下行获取字节数组:
var x = Encoding.UTF8.GetBytes(csvString);
但是当我使用以下命令将其返回以供下载时:
return File(x, ..., ...);
我得到一个没有 BOM 的文件,因此无法正确显示克罗地亚语字符。这是因为我的bytes数组编码后不包含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。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)