Tôi đã cố gắng tìm một giải pháp / giải thích hợp lý (không thành công) để tìm hiểu lý do tại sao Excel mặc định xóa BOM khi lưu tệp vào loại CSV.
Xin vui lòng tha thứ cho tôi nếu bạn thấy đây là một bản sao của câu hỏi này . Điều này xử lý việc đọc các tệp CSV với mã hóa không phải ASCII, nhưng nó không bao gồm việc lưu lại tệp đó (đây là vấn đề lớn nhất).
Đây là tình huống hiện tại của tôi (mà tôi sẽ thu thập là phổ biến giữa các phần mềm được bản địa hóa xử lý các ký tự Unicode và định dạng CSV):
Chúng tôi xuất dữ liệu sang định dạng CSV bằng UTF-16LE, đảm bảo BOM được đặt (0xFFFE). Chúng tôi xác nhận sau khi tệp được tạo bằng trình soạn thảo Hex để đảm bảo tệp được đặt chính xác.
Mở tệp trong Excel (ví dụ này chúng tôi đang xuất các ký tự tiếng Nhật) và chứng kiến rằng Excel xử lý việc tải tệp với mã hóa chính xác.
Nỗ lực lưu tệp này sẽ nhắc bạn với một thông báo cảnh báo cho biết rằng tệp có thể chứa các tính năng có thể không tương thích với mã hóa Unicode, nhưng hỏi xem bạn có muốn lưu không.
Nếu bạn chọn hộp thoại Lưu dưới dạng, nó sẽ ngay lập tức yêu cầu bạn lưu tệp dưới dạng "Văn bản Unicode" thay vì CSV. Nếu bạn chọn tiện ích mở rộng "CSV" và lưu tệp, nó sẽ xóa BOM (rõ ràng cùng với tất cả các ký tự tiếng Nhật).
Tại sao điều này sẽ xảy ra? Có giải pháp nào cho vấn đề này không, hay đây là một 'lỗi' / giới hạn đã biết của Excel?
Ngoài ra (như một vấn đề phụ), Excel, khi tải các tệp CSV được mã hóa UTF-16LE, chỉ sử dụng các dấu phân cách TAB. Một lần nữa, đây có phải là một 'lỗi' / giới hạn của Excel không?