2012-12-13 24 views
18

Ich benutze nodeJS v0.8.6 und die native Bibliothek fs. Hier ist mein Code:NodeJs - wie mache ich eine Funktion fs.writeFile schreibe mit BOM?

var filesys = require('fs'); 
filesys.writeFile('test.txt', 'This is an example with accents : é è à ','utf8', function (err) {}); 

Das Problem ist, dass es in UTF-8 ohne BOM schreibt (ich benutze Notepad ++ um es zu überprüfen) und es funktioniert nicht in Wordpad unter Windows (die Akzente sind nicht gut angezeigt). Die Sache ist, dass ich diese Datei brauche, um von Womeone mit Wordpad gelesen zu werden.

Wie kann ich die Stückliste zu meiner Datei hinzufügen?

Antwort

28

UTF-8 benötigt keine bom, aber Sie können es natürlich selbst hinzufügen.

filesys.writeFile('test.txt', '\ufeffThis is an example with accents : é è à ','utf8', function (err) {}); 
+0

Großartig Es funktioniert! Danke! – user706355

+7

UTF-8 benötigt möglicherweise keine Stückliste in vernünftigen Betriebssystemen und Anwendungen, aber unter Windows tut es fast immer. Die Ausnahmen sind meist plattformübergreifender Code, der von einer normalen Umgebung portiert wird. – hippietrail

+0

Ein Problem wurde behoben, bei dem ich eine CSV-Datei an den Client gesendet habe, die unter Unix, nicht auf Windaube funktionierte. Das hat es behoben! – Vadorequest

1

I erarbeitet auf diese Antwort im Detail auf diese Antwort - Adding UTF-8 BOM to string/Blob.

Dies ist eine sehr spärliche Antwort, die nicht ins Detail gehen zu warum dies funktioniert. Die FEFF-Bytes sind eigentlich die UTF16LE-Stückliste, daher ist die vorherige Antwort verwirrend.

Verwandte Themen