2012-12-13 29 views
18

Tôi đang sử dụng nodeJS v0.8.6 và thư viện gốc fs. Đây là mã của tôi:NodeJs - cách tạo hàm fs.writeFile viết bằng BOM?

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

Vấn đề là nó viết trong utf8 mà không BOM (tôi sử dụng notepad ++ để xác minh nó) và nó không hoạt động trong wordpad trên Windows (các điểm nhấn không cũng hiển thị). Vấn đề là tôi cần tập tin đó được đọc bởi womeone bằng wordpad.

Làm cách nào để thêm BOM vào tệp của tôi?

Trả lời

28

UTF-8 không yêu cầu máy bay ném bom, nhưng tất nhiên bạn có thể tự thêm nó.

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

Tuyệt vời Nó hoạt động! Cảm ơn! – user706355

+7

UTF-8 có thể không yêu cầu BOM trong các ứng dụng và hệ điều hành được kích hoạt, nhưng trong Windows, nó chỉ là về luôn. Các ngoại lệ chủ yếu là mã đa nền tảng được chuyển từ một môi trường lành mạnh. – hippietrail

+0

Đã khắc phục sự cố trong đó tôi đang gửi tệp CSV cho ứng dụng khách, hoạt động tốt trên kiểu Unix, chứ không phải trên Windaube. Điều này cố định nó! – Vadorequest

1

Tôi đã giải thích chi tiết câu trả lời này - Adding UTF-8 BOM to string/Blob.

Đây là câu trả lời rất thưa thớt không đi sâu vào chi tiết như lý do tại sao hoạt động này. Các byte FEFF thực sự là UTF16LE BOM, vì vậy câu trả lời trước là khó hiểu.