我看过这篇文章: characters appended to the beginning of each file。
在那种情况下,作者是手动读取源文件并写入内容。就我而言,我通过 HttpRequest 将其抽象出来。传输文件():
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) 它经过优化,不会先将文件读入内存——这在文件很大和/或你有很多并发请求。但另一方面是我无法在没有 BOM 的情况下将其重新编码为 UTF-8。(我想这是一个泄漏抽象的例子。)
有什么优雅的方法可以解决这个问题吗?谢谢!