Domanda

Ho visto questo post: ï »¿caratteri allegata al l'inizio di ogni file .

In questo caso, l'autore stava leggendo manualmente il file di origine e la scrittura dei contenuti. Nel mio caso, sto astraendo via via 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");
}

I file .js sono infatti codificati in UTF-8. Questo significa che il ï »¿BOM appare in modo non corretto, all'inizio di ogni ma il primo file.

Le cose belle di TransmitFile () sono che (a) si astrae l'intero processo di lettura + scrittura, e (b) è ottimizzato per non leggere i file in memoria prima - che è estremamente importante quando i file sono di grandi dimensioni e / o si dispone di molte richieste simultanee. Ma il rovescio della medaglia è che io non sono in grado di ricodificare in UTF-8 senza BOM. (Credo che questo sia un esempio di astrazione che perde.)

C'è un modo elegante per risolvere questo problema? Grazie!

È stato utile?

Soluzione

La chiusura del ciclo su questo: TransmitFile() trasmette i byte grezzi del file, quindi se i file sono codificati in UTF-8 con una distinta base e si trasmettono più file, potrai trasmettere più distinte base

.

Se si leggono i file da soli nella memoria come stringhe e trasmettere quelle corde, non sarà possibile ottenere questo problema. Abbiamo finito con semplice codifica dei file come UTF-8 senza BOM o come ANSI.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top