Entfernen Byte Order Mark aus der Datei.ReadAllBytes (byte[])
Ich habe einen HTTPHandler, dass sich der Lektüre in einem Satz von CSS-Dateien und Sie zu kombinieren und dann Gzip. Jedoch, einige der CSS-Dateien enthalten eine Byte Order Mark (durch einen bug im TFS 2005 auto merge) und im FireFox die Stückliste wird Lesen als Teil des eigentlichen Inhalts, so ist es vermasseln meiner Klasse Namen etc. Wie kann ich die Streifen aus dem BOM-Zeichen? Gibt es eine einfache Möglichkeit dies zu tun, ohne manuell gehen durch das byte-array auf der Suche nach ""?
Ist die Stückliste, die in den eigentlichen text selbst, oder nur am Anfang? Ich wäre überrascht, wenn es irgendwo anders als am Anfang der Daten - in dem Fall einfach ignorieren die ersten 3 bytes (unter der Annahme UTF-8) sollte den trick tun.
FWIW, du könntest die Dateien öffnen in Notepad++, und speichern Sie Sie ohne die Byte Order Mark. Es ist, was ich tun musste, um in diese Frage.
Ich schrieb die folgenden Beitrag nach kommen über dieses Problem. Im wesentlichen Lesen, anstatt in die rohen bytes der Datei-Inhalt mit der BinaryReader Klasse, ich benutze die StreamReader-Klasse mit einem bestimmten Konstruktor, der entfernt automatisch die byte-order-mark-Zeichen von den textuellen Daten, die ich bin versucht zu Holen.
FWIW, du könntest die Dateien öffnen in Notepad++, und speichern Sie Sie ohne die Byte Order Mark. Es ist, was ich tun musste, um in diese Frage.
Ich schrieb die folgenden Beitrag nach kommen über dieses Problem. Im wesentlichen Lesen, anstatt in die rohen bytes der Datei-Inhalt mit der BinaryReader Klasse, ich benutze die StreamReader-Klasse mit einem bestimmten Konstruktor, der entfernt automatisch die byte-order-mark-Zeichen von den textuellen Daten, die ich bin versucht zu Holen.
InformationsquelleAutor JC Grubbs | 2008-11-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erweiterung auf Jon ' s Kommentar mit einer Probe.
InformationsquelleAutor JaredPar
Ausbau JaredPar Probe recurse über sub-Verzeichnisse:
Ich hatte müssen, dass C# - code nach der Entdeckung, dass der UTF-8-BOM beschädigt-Datei, wenn Sie versuchen, führen Sie eine einfache PHP-Datei herunterladen.
InformationsquelleAutor Olivier de Rivoyre
new UTF8Encoding(false)
der parameter zeigt an, ob die Stückliste oder nicht.InformationsquelleAutor
Andere Weise, vorausgesetzt, UTF-8 zu ASCII.
InformationsquelleAutor Tim Bailey
Für größere Dateien verwenden Sie den folgenden code, Speicher effizient!
InformationsquelleAutor Ashokan Sivapragasam