我在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技术控 获取更多资讯