fs.writeFile dùng utf-8 encoding nhưng không được
-
Chào mọi người. Em đang làm phần export data ra file csv. Hiện tại em đang bị lỗi ở phần ghi ra file, không hiểu sao khi ghi file em đã dùng loại encoding default là utf8 cho hàm fs.writeFile nhưng khi mở cái file csv đó ra thì lại thấy mấy cái chữ dạng như tiếng việt thì nó bị hiển thị sai. Ai có thể giúp em vơi ạ. Em xin cảm ơn !
Đây là code ghi file của em
Đây là kết quả (chữ đỏ đáng lẽ là "phạm văn đồng")
-
Bạn mở thử bằng Gedit/notepad chuẩn utf-8 encoding && font Arial gì gì đó coi có lỗi không =.=, và xem lại cái dữ liệu
csv_content
.
-
mình mở bằng notepad ++ chuẩn utf-8 rồi nó hiển thị bình thường chỉ có mở = excel là lỗi v thôi.
-
Có 2 nguyên nhân có thể dẫn đến việc không hiển thị được định dạng
UTF-8
- Bản thân chuỗi
csv_content
không phải làutf-8
, trường hợp này bạn hãy kiểm tra content nguồn lấy về csv_content
đã làutf-8
nhưng trình đọc không hiển thị đúng, trường hợp này bạn có thể kiểm tra bằng cách mở file kết quả vớiNotepad++
Nếu bạn rơi vào trường hợp 2 có thể xử lý bằng cách cộng thêm kí tự BOM
\uFEFF
vào đầu chuỗicsv_content
. Cụ thể như thế này:var fs = require("fs"); fs.writeFile("test.csv", "\uFEFF" + csv_content, function cb(err) { console.log("ok"); });
Hi vọng đúng trường hợp của bạn
- Bản thân chuỗi
-
@Vũ Cảm ơn bạn. Mình bị rơi vào trường hợp 2 rồi. Fix theo cách của bạn và đã thành công
-
@thanh-nam-trần Ko có gì đâu bạn, upvote cho mềnh là đc rồi :))
-
@Vũ Thank bro :))) Ez way