我已经看到了这个帖子:字符附加到每个文件的开头。

在这种情况下,提交人手动读取源文件和写入的内容。就我而言,我通过的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去。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top