Lưu tệp trong loại CSV trong Excel luôn xóa BOM


15

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?

Câu trả lời:


6

Không có câu trả lời lịch sự cho các câu hỏi có dạng "Tại sao Excel làm X?".

Tại sao bạn không chấp nhận "Lưu dưới dạng văn bản Unicode" làm định dạng chuyển tiêu chuẩn của mình? Excel Save đảm bảo có BOM, sử dụng TAB làm dấu phân cách, trích dẫn các trường giống như CSV ...

Nhân tiện, bạn không "chọn tiện ích mở rộng CSV". Bạn có HAI lựa chọn - định dạng và phần mở rộng. Hãy thử lưu dưới dạng văn bản unicode trong hộp 'Lưu dưới dạng' và thay đổi thủ công phần mở rộng trong hộp 'Tên tệp' thành csv. Sau đó thoát khỏi Excel và bấm đúp vào tên tệp trong Windows Explorer. Mở ra tốt đẹp. Thử nó.

Cập nhật để thảo luận về ý kiến ​​của OP :

  • "Lưu dưới dạng Văn bản Unicode" (trong Excel 2007) sẽ luôn lưu tệp của bạn dưới dạng tiện ích mở rộng Văn bản (Tôi không thể nói cho các phiên bản trước hoặc mới hơn). Đó là ý tưởng của "Lưu dưới dạng" ...

=> Vui lòng đọc kỹ những gì tôi đã viết ở trên và tự mình thử. Nó sẽ luôn lưu tệp của bạn bằng tiện ích mở rộng TXT trừ khi bạn ghi đè lên đó : xóa txthộp và nhập tên 'Tên tệp' csv.

  • Để làm rõ "Lưu Excel của bạn để đảm bảo có BOM", không chính xác.

=> "Lưu dưới dạng văn bản Unicode " đảm bảo rằng có BOM UTF-16LE ở phía trước tệp. Hãy thử nó và xem.

  • Đây là lý do tôi đã hỏi một câu hỏi ngay từ đầu! Nếu tôi mở tệp được định dạng CSV chứa BOM để cho biết tệp Mã hóa của mình là UFT-16LE và sửa đổi tệp này qua Excel, tôi mong đợi khi tôi lưu tệp này mà Mã hóa vẫn còn trong chiến thuật ...

=> và mong đợi của bạn không được đáp ứng, vì Excel không giữ lại bất kỳ thông tin nào về các tệp CSV đầu vào. Không có cách nào để buộc nó làm những gì bạn muốn làm. Vì vậy, bạn hoặc từ bỏ hoặc thử một cái gì đó khác, như những gì tôi đang đề xuất.

  • Điều gì sẽ thực sự tốt đẹp là ai đó đã trải qua những vấn đề này trước đây, xin vui lòng cung cấp cái nhìn sâu sắc của bạn.

=> Tôi đã gặp những vấn đề này, với dữ liệu của Trung Quốc và Excel 1997, nhiều năm trước. Tôi có, trước khi trả lời câu hỏi của bạn, đã xác minh với Excel 2003 và Excel 2007 rằng Excel vẫn đang hoạt động kém. Tôi đã xác minh rằng giải pháp "lưu dưới dạng = văn bản Unicode, phần mở rộng = CSV" thực sự hoạt động. Tôi đã cung cấp những hiểu biết của tôi.


1
"Lưu dưới dạng Văn bản Unicode" (trong Excel 2007) sẽ luôn lưu tệp của bạn dưới dạng tiện ích mở rộng Văn bản (Tôi không thể nói cho các phiên bản trước hoặc mới hơn). Đó là ý tưởng của "Lưu dưới dạng" ... Để làm rõ "Lưu Excel của bạn để đảm bảo có BOM", là không chính xác. Đây là lý do tôi đã hỏi một câu hỏi ngay từ đầu! Nếu tôi mở tệp được định dạng CSV chứa BOM để cho biết tệp của tôi Mã hóa là UFT-16LE và sửa đổi tệp này qua Excel, tôi hy vọng khi tôi lưu tệp này rằng Mã hóa vẫn còn trong chiến thuật ... Điều gì đó thực sự tốt đẹp là ai đó Ai đã trải qua những vấn đề này trước đây, xin vui lòng cung cấp cái nhìn sâu sắc của bạn.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.