在由于HttpResponse.TransmitFile ASP.NET响应的中间字符(UTF-8 BOM)()
-
21-09-2019 - |
题
我已经看到了这个帖子:字符附加到每个文件的开头。
在这种情况下,提交人手动读取源文件和写入的内容。就我而言,我通过的HttpRequest。的TransmitFile 抽象它扔掉():
public void ProcessRequest(HttpContext context)
{
HttpRequest req = context.Request;
HttpResponse resp = context.Response;
resp.ContentType = "application/javascript";
resp.TransmitFile("foo.js");
resp.TransmitFile("bar.js");
resp.TransmitFile("baz.js");
}
在.js文件以UTF-8编码的确实。这意味着BOM错误地出现在每个但第一文件的开头。
约的TransmitFile()的好话是:(a)其抽象了整个读+写入处理,和(b)它的优化,以不会第一读取文件到存储器中 - 当所述文件是大这是非常重要的和/或你有很多并发请求。但另一面是,我不能重新编码成UTF-8无BOM。 (我想这是漏抽象的一个例子。)
有没有办法解决这个问题的任何优雅的方式?谢谢!
解决方案
结束循环在此:TransmitFile()
发送文件的原始字节,所以如果文件以UTF-8编码有BOM和你发送多个文件,你会发送多个的BOM
如果你读自己的文件到内存中的字符串并将这些字符串,你不会得到这个问题。我们结束了简单地编码所述文件为UTF-8无BOM或作为ANSI去。
不隶属于 StackOverflow