ฉันพยายามหาคำตอบ / คำอธิบายที่สมเหตุสมผล (ไม่สำเร็จ) เพื่อค้นหาว่าเหตุใด Excel จึงใช้ค่าเริ่มต้นในการลบ BOM เมื่อบันทึกไฟล์เป็นประเภท CSV
โปรดยกโทษให้ฉันหากคุณพบว่าซ้ำกับคำถามนี้ สิ่งนี้จะจัดการกับการอ่านไฟล์ CSV ด้วยการเข้ารหัสที่ไม่ใช่ ASCII แต่มันไม่ครอบคลุมการบันทึกไฟล์กลับออกมา
นี่คือสถานการณ์ปัจจุบันของฉัน (ซึ่งฉันกำลังจะรวบรวมเป็นเรื่องธรรมดาในบรรดาซอฟต์แวร์ที่แปลเป็นภาษาท้องถิ่นที่มีอักขระ Unicode และรูปแบบ CSV):
เราส่งออกข้อมูลไปยังรูปแบบ CSV โดยใช้ UTF-16LE เพื่อให้มั่นใจว่ามีการตั้งค่า BOM (0xFFFE) เราตรวจสอบความถูกต้องหลังจากสร้างไฟล์ด้วยตัวแก้ไข Hex เพื่อให้แน่ใจว่าได้ตั้งค่าไว้อย่างถูกต้อง
เปิดไฟล์ใน Excel (สำหรับตัวอย่างนี้เรากำลังส่งออกตัวอักษรญี่ปุ่น) และเป็นพยานว่า Excel จัดการโหลดไฟล์ด้วยการเข้ารหัสที่ถูกต้อง
ความพยายามในการบันทึกไฟล์นี้จะแสดงข้อความเตือนให้คุณทราบว่าไฟล์นั้นอาจมีฟีเจอร์ที่ไม่สามารถใช้งานร่วมกับการเข้ารหัส Unicode แต่ถามว่าคุณต้องการบันทึกหรือไม่
หากคุณเลือกกล่องโต้ตอบบันทึกเป็นมันจะขอให้คุณบันทึกไฟล์เป็น "ข้อความ Unicode" ทันทีแทนที่จะเป็น CSV หากคุณเลือกส่วนขยาย "CSV" และบันทึกไฟล์ไฟล์นั้นจะลบ BOM (อย่างชัดเจนพร้อมกับตัวอักษรญี่ปุ่นทั้งหมด)
ทำไมสิ่งนี้จะเกิดขึ้น มีวิธีแก้ไขปัญหานี้หรือว่าเป็น 'ข้อผิดพลาด' / ข้อ จำกัด ของ Excel หรือไม่
นอกจากนี้ (เป็นปัญหาด้านข้าง) ปรากฏว่า Excel เมื่อโหลดไฟล์ CSV ที่เข้ารหัส UTF-16LE ใช้ตัวคั่น TAB เท่านั้น อีกครั้งนี้เป็น 'ข้อผิดพลาด' / ข้อ จำกัด ของ Excel ที่รู้จักกันอีกหรือไม่