ทำไมไฟล์ CSV เปิดใน Excel แล้วสระภาษาไทยเพี้ยนและเลข 0 หาย? วิธีแก้ปัญหา BOM และตัวคั่น
สารบัญเนื้อหา
1. ปัญหาคลาสสิก 3 ประการเมื่อเปิดไฟล์ CSV ด้วย Microsoft Excel
ไฟล์ CSV (Comma-Separated Values) เป็นรูปแบบข้อมูลตารางที่เป็นข้อความธรรมดา แต่เมื่อผู้ใช้งานดับเบิลคลิกเปิดใน Microsoft Excel มักจะพบปัญหาชวนปวดหัว 3 อย่าง:
- ภาษาไทยกลายเป็นตัวอักษรขยะต่างดาว (Mojibake): เช่น ข้อความ
"รายงานลูกค้า"กลายเป็น"Ã Ã Ã Ã"หรือเครื่องหมายคำถาม - ข้อมูลทุกคอลัมน์ไปกองรวมกันในคอลัมน์ A: ตารางไม่ยอมแยกคอลัมน์ตามตัวคั่น
- เลข 0 ตัวแรกหายไป: เช่น เบอร์โทรศัพท์
0812345678หรือรหัสสินค้า00123ถูกแปลงเป็นตัวเลข812345678และ123
2. บทบาทของ Byte Order Mark (UTF-8 BOM: 0xEF, 0xBB, 0xBF)
Excel ในระบบปฏิบัติการ Windows ถูกออกแบบมาในยุคเดิมที่ใช้รหัสภาษาเฉพาะถิ่น (ANSI Code Page เช่น Windows-874 สำหรับภาษาไทย) เมื่อเปิดไฟล์ CSV ที่ไม่มีลายเซ็นกำกับ Excel จะถือว่าไฟล์นั้นเป็น ANSI เสมอ ไม่ใช่ UTF-8
การแก้ไขที่ถูกต้องคือการใส่ไบต์ UTF-8 BOM (0xEF, 0xBB, 0xBF) ไว้ที่ต้นไฟล์ เพื่อเป็นสัญญาณสั่งให้ Excel เปิดอ่านด้วยการถอดรหัส UTF-8 โดยอัตโนมัติ สระและพยัญชนะภาษาไทยจึงจะแสดงผลได้อย่างถูกต้อง
3. ปัญหาตัวคั่นจุลภาค (,) เทียบกับเซมิโคลอน (;) และเลขศูนย์นำหน้า
ในหลายภูมิภาคยุโรป เครื่องหมายจุลภาคถูกใช้เป็นตัวคั่นทศนิยม ระบบจึงตั้งค่าตัวคั่นรายการเป็นเซมิโคลอน (;) หากเปิดไฟล์ที่มีเครื่องหมายจุลภาค Excel จะไม่แยกคอลัมน์
สำหรับการรักษาเลข 0 นำหน้า ฟิลด์ดังกล่าวจะต้องถูกครอบด้วยสูตรข้อความ เช่น ="0812345678" ในไฟล์ CSV เพื่อบังคับไม่ให้ Excel พยายามแปลงข้อความเป็นตัวเลข
คำถามที่พบบ่อย (FAQ)
ทำไมโปรแกรม Notepad เปิดภาษาไทยได้ปกติ แต่ Excel อ่านไม่ออก?
Notepad รุ่นใหม่มีระบบตรวจจับการเข้ารหัส UTF-8 อัตโนมัติแม้ไม่มี BOM แต่ Excel ยังคงใช้ตารางรหัส ANSI ตามค่ารีจิสทรีของระบบปฏิบัติการหากไม่มีไบต์ BOM กำกับ