2012-12-13 15 views
18

Sto usando nodeJS v0.8.6 e la libreria nativa fs. Ecco il mio codice:NodeJs - come rendere la funzione fs.writeFile scrivere con BOM?

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

Il problema è che si scrive in utf8 senza BOM (io uso Notepad ++ per verificarlo) e non funziona in WordPad su Windows (gli accenti non sono ben visualizzate). Il fatto è che ho bisogno che quel file sia ben letto da qualcuno che usa il wordpad.

Come posso aggiungere la DBA al mio file?

risposta

28

UTF-8 non richiede un bombardamento, ma è possibile aggiungerlo autonomamente.

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

Great It works! Grazie! – user706355

+7

UTF-8 potrebbe non richiedere una distinta base in sistemi operativi e app sensati, ma in Windows lo fa sempre. Le eccezioni sono per lo più codice cross-platform portato da un ambiente sano. – hippietrail

+0

Risolto un problema in cui stavo inviando un file CSV al client, funzionava bene su Unix-like, non su Windaube. Questo l'ha risolto! – Vadorequest

1

ho elaborato su questa risposta in dettaglio in questa risposta - Adding UTF-8 BOM to string/Blob.

Questa è una risposta molto sparsa che non entra nei dettagli su perché funziona questo. I byte FEFF sono in realtà la distinta base UTF16LE, quindi la risposta precedente è confusa.

Problemi correlati