PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C#: Datei in UTF-8 ohne BOM?


Elemental
2008-12-30, 14:23:33
Hallo,
ich versuch gerade verzeifelt in C# eine Datei in UTF-8 ohne BOM zu schreiben, aber ich finde nichts dazu, wie es geht.

Weiss jemand, ob das überhaupt möglich ist?

mfG
Elemental

Monger
2008-12-30, 14:40:07
Hm... hast du den StreamWriter schonmal ausprobiert?

Nach dem was hier (http://msdn.microsoft.com/de-de/library/system.io.streamwriter.aspx) steht, sollte der standardmäßig ohnehin UTF-8 ohne BOM verwenden.

Edit:
"Wenn Sie einen anderen Wert als Encoding.Default angeben, wird die Bytereihenfolgemarkierung (BOM, Byte Order Mark) in die Datei geschrieben." (Link (http://msdn.microsoft.com/de-de/library/f5f5x7kt.aspx))

Elemental
2008-12-30, 14:54:51
Hmm, ja hab ich gerade getestet.

Wenn man den StreamWriter benutzt und kein Encoding angibt, dann kommt UTF-8 ohne BOM raus.

Genauso bei System.IO.File.WriteAllText()
Wenn man da kein Encoding angibt, dann kommt auch UTF-8 ohne BOM raus.


Aber schon merkwürdig. Ich schreibe die Dateien für einen auf Linux basierenden Satelliten-Receiver und der kommt mit den BOM irgendwie nicht klar...

Gnafoo
2008-12-31, 16:36:37
Du kannst ein UTF8Encoding-Objekt erzeugen. Einer der Konstruktoren erlaubt es dir anzugeben, ob du den BOM haben willst.

Ich habe es jetzt nicht getestet, aber das dürfte in etwa so funktionieren:


UTF8Encoding encoding = new UTF8Encoding(false);
using (StreamWriter writer = new StreamWriter("bla.txt", false, encoding))
{
// ...
}

Elemental
2009-01-04, 19:09:24
Danke, "UTF8Encoding encoding = new UTF8Encoding(false)" funktioniert auch wunderbar :)