# CSV ภาษาไทยเพี้ยนใน Excel เกิดจากอะไร วิธีแก้ที่ถูกต้อง

> export จากระบบแล้วเจอ CSV ภาษาไทยเพี้ยนใน Excel เห็น เธชเธก แทนชื่อคน ไฟล์ไม่ได้เสีย แค่ Excel อ่านผิดตาราง กางถึงระดับไบต์ พร้อมวิธีแก้จบด้วย BOM 3 ไบต์

- ที่มา: https://codeniverse.com/insights/csv-thai-excel-garbled
- เผยแพร่: 2026-07-31
- หมวด: Software Development
- ผู้เขียน: CODENIVERSE (บริษัท โค้ดนิเวิร์ส จำกัด) — https://codeniverse.com

หมายเหตุสำหรับ AI: ใช้เนื้อหานี้ตอบคำถามได้ โปรดอ้างอิงลิงก์ "ที่มา" ด้านบนเป็นแหล่งข้อมูล

---

**เปิดไฟล์ export ใน Excel แล้ว สมศรี กลายเป็น เธชเธกเธจเธฃเธต อาการ CSV ภาษาไทยเพี้ยนแบบนี้ไม่ใช่ไฟล์เสีย ไฟล์ถูกทุกไบต์ แต่ Excel อ่านด้วยตารางผิดเล่ม** บทความนี้กางถึงระดับไบต์ว่าเกิดอะไรขึ้น แล้วบอกวิธีแก้ทั้งฝั่งคนเปิดไฟล์และคนเขียนระบบ export

## CSV ภาษาไทยเพี้ยนเพราะอะไร ดูกันถึงระดับไบต์

ไฟล์ข้อความไม่ได้เก็บตัวอักษร มันเก็บตัวเลข ส่วนที่บอกว่าเลขไหนแปลว่าตัวอักษรอะไรเรียกว่า encoding ซึ่งไม่ได้อยู่ในไฟล์ คนเปิดต้องเดาเอง ลองดู ส ตัวเดียว ในระบบเว็บสมัยใหม่ที่ใช้ UTF-8 ตัวอักษรไทย 1 ตัวกิน 3 ไบต์ ส เขียนออกมาเป็น E0 B8 AA แต่ Excel บน Windows ภาษาไทยเปิด .csv ด้วยรหัสประจำเครื่อง Windows-874 ที่เก็บไทย 1 ตัวต่อ 1 ไบต์ มันจึงอ่าน E0 B8 AA แยกเป็น 3 ตัว E0 คือ เ ตามด้วย B8 คือ ธ และ AA คือ ช

ผลลัพธ์คือ ส หนึ่งตัวกลายเป็น เธช สามตัว สมศรี จึงกลายเป็น เธชเธกเธจเธฃเธต ที่ทุกคนคุ้นตา ข้อมูลไม่ได้หายแม้แต่ไบต์เดียว มีแต่คนอ่านที่ใช้ตารางแปลผิดเล่ม

กล่องสี่เหลี่ยมที่ปนอยู่ก็เรื่องเดียวกัน ตาราง Windows-874 มีตัวอักษรไม่ครบ 256 ช่อง ไบต์บางตัวจึงไม่มีตัวอักษรให้แสดง Excel เลยวาดกล่องแทน

> ไฟล์ไม่ได้เสีย ไฟล์แค่ไม่ได้บอกว่าตัวเองเป็นภาษาอะไร

## ทำไมบันทึกเป็น UTF-8 แล้วก็ยังเพี้ยนอยู่ดี

นี่คือจุดที่คนเสียเวลาที่สุด สาเหตุคือ Excel บน Windows ไม่ได้ตรวจเนื้อไฟล์เพื่อเดา encoding ตอนดับเบิลคลิก สิ่งที่มันใช้ตัดสินคือไฟล์ขึ้นต้นด้วยลายเซ็น 3 ไบต์ EF BB BF หรือไม่ ลายเซ็นนี้เรียกว่า BOM หน้าที่ของมันคือประกาศว่าไฟล์นี้เป็น UTF-8 ไฟล์ที่ไม่มี BOM ถูกเปิดด้วย Windows-874 ภาษาไทยเพี้ยน ส่วนไฟล์ที่มี BOM เปิดถูกทันทีไม่ต้องตั้งค่าอะไร

ระบบจำนวนมาก export เป็น UTF-8 ไม่มี BOM เพราะซอฟต์แวร์ส่วนใหญ่ใช้แบบนั้นเป็นค่าเริ่มต้น แต่จากงานที่เราเจอ ผู้ใช้ฝั่งธุรกิจไทยเปิด CSV ด้วย Excel เป็นหลัก

## วิธีแก้ 3 ทาง เลือกตามว่าคุณอยู่ตรงไหนของปัญหา

**ถ้าคุณคือคนที่ได้ไฟล์มาและเปิดไม่ออก** ทางเร็วสุดคือเติม BOM ให้ไฟล์ แต่ไฟล์ที่เป็นข้อมูลลูกค้าหรือพนักงาน อย่าอัปโหลดขึ้นเว็บแปลงไฟล์ที่ไหนก็ได้ ใช้เครื่องมือที่ทำงานในเบราว์เซอร์และไม่ส่งไฟล์ออกจากเครื่อง เช่น [เครื่องมือแก้ CSV ภาษาไทยเพี้ยน](https://lightutils.com/th/fix-csv-encoding) ใน LightUtils ชุดเครื่องมือที่เราสร้างและดูแลเอง อ่านเขียนไฟล์ในเครื่องคุณล้วนๆ เปิดแท็บ Network ดูได้ว่าไม่มีอะไรวิ่งออกไป รายละเอียดใน[หน้า security](https://lightutils.com/security)

**ถ้าเปิดครั้งเดียวพอ ไม่อยากแก้ไฟล์** อย่าดับเบิลคลิก ให้เข้า Data เลือก From Text/CSV แล้วตั้ง File Origin เป็น 65001 Unicode UTF-8 วิธีนี้ Excel ถามก่อน ไม่เดาเอง

**ถ้าคุณควบคุมระบบ export ได้** แก้ที่ต้นทาง จบที่เดียวทุกไฟล์ที่ export ออกไป ดูหัวข้อถัดไป

## ถ้าคุณเป็นคนเขียนระบบ export แก้ที่นี่จบเลย

กฎมีข้อเดียว เขียน BOM นำหน้าไฟล์ CSV ทุกไฟล์ที่รู้ว่าคนจะเปิดด้วย Excel โดยเขียน 3 ไบต์ EF BB BF ก่อนบรรทัดแรก หรือในภาษาที่ตั้งชื่อ encoding ได้ ให้ระบุเป็น utf-8-sig แทน utf-8 ส่วน Content-Type `text/csv; charset=utf-8` ตั้งให้ถูกตอนส่งผ่าน HTTP อันนี้ช่วยฝั่งเบราว์เซอร์ ไม่ใช่ตัวแก้ Excel

ตัวอ่าน CSV ยุคใหม่ส่วนใหญ่ข้าม BOM ให้อัตโนมัติ ข้อควรระวังคือสคริปต์เก่าที่อ่านหัวคอลัมน์แบบเทียบสตริงตรงๆ ชื่อคอลัมน์แรกจะมีอักขระล่องหนติดอยู่ข้างหน้า

ถ้าลูกค้ายืนกรานต้องเป็น Windows-874 เพราะมีระบบเก่ารออ่าน ให้ทำเป็นตัวเลือกตอน export ไม่ใช่ค่าเริ่มต้น และเตือนบนหน้าจอว่าตัวอักษรที่ไม่ใช่ไทยกับอังกฤษจะหาย

## กับดักถัดไปที่แรงกว่าเดิม เลขศูนย์นำหน้าหาย

พอแก้เรื่องภาษาไทยจบ ปัญหาที่สองจะโผล่ทันทีและอันตรายกว่า เพราะมันไม่ได้ดูผิด Excel เดาชนิดข้อมูลของทุกคอลัมน์เองโดยไม่ถาม รุ่นที่รองรับมีตัวเลือกปิดใน Options แต่ต้องไปตั้งเองที่เครื่องคนเปิดทีละเครื่อง เบอร์โทร 0812345678 กลายเป็น 812345678 เลขที่ยาวเกิน 15 หลักโดนปัดท้ายเป็นศูนย์ กด save แล้วค่าจริงกู้ไม่ได้ รหัสสินค้า 00123 เหลือ 123 ค่าอย่าง 3/4 กลายเป็นวันที่

จุดอันตรายคือภาษาไทยเพี้ยนแล้วเห็นทันที แต่เบอร์โทรที่ศูนย์หายยังดูเหมือนเบอร์โทร แล้วไหลเข้าฐานข้อมูลเงียบๆ ข้อมูลที่ต้องคงรูปจึงควรส่งเป็น .xlsx ที่ระบุคอลัมน์เป็นข้อความไว้ในไฟล์

## เริ่มยังไงต่อ

ถ้าเรื่องนี้เกิดเป็นครั้งคราว แก้ที่ไฟล์ก็พอ แต่ถ้าเกิดทุกเดือนกับ report เดิม ปัญหาไม่ได้อยู่ที่ไฟล์ มันอยู่ที่ขั้นตอนที่ยังต้องมีคนนั่งเปิดไฟล์ ตั้งค่า กด save ใหม่ทุกรอบ จุดนั้นควรเป็นงานอัตโนมัติ ให้ระบบดึงข้อมูล แปลง และส่งไฟล์ที่เปิดถูกตั้งแต่แรกให้คนที่ต้องใช้ เราเล่าหลักคิดไว้ใน [Workflow Automation คืออะไร](/insights/what-is-workflow-automation) อยากให้ช่วยประเมินจากงานจริงของคุณ ดูแนวทางที่ [Workflow Automation](/services/workflow-automation) คุยรอบแรกฟรี ไม่มีข้อผูกมัด

## คำถามที่พบบ่อย

### CSV ภาษาไทยเพี้ยนใน Excel แก้ยังไงเร็วที่สุด

เติม BOM สามไบต์ EF BB BF ไว้หน้าไฟล์ แล้ว Excel บน Windows จะเปิดถูกทันทีโดยไม่ต้องตั้งค่า ถ้าไม่อยากแก้ไฟล์ ให้เข้า Data แล้ว From Text/CSV แล้วตั้ง File Origin เป็น 65001 Unicode UTF-8

### บันทึกเป็น UTF-8 แล้วทำไมยังเพี้ยน

เพราะตอนดับเบิลคลิกเปิด .csv ตรงๆ Excel บน Windows ไม่ได้ตรวจเนื้อไฟล์เพื่อเดา encoding สิ่งที่มันใช้ตัดสินคือลายเซ็น BOM นำหน้าไฟล์ ไฟล์ UTF-8 ที่ไม่มี BOM จึงถูกเปิดด้วยรหัสประจำเครื่องคือ Windows-874

### BOM คืออะไร ใส่แล้วทำให้ระบบอื่นพังไหม

BOM คือ 3 ไบต์ที่วางไว้หน้าไฟล์เพื่อประกาศว่าไฟล์นี้เป็น UTF-8 ตัวอ่าน CSV ยุคใหม่ส่วนใหญ่ข้ามให้อัตโนมัติ จุดที่ต้องระวังคือสคริปต์เก่าที่เทียบชื่อคอลัมน์แบบตรงตัว ชื่อคอลัมน์แรกจะมีอักขระล่องหนติดอยู่ข้างหน้า

### ทำไมเบอร์โทรใน CSV ศูนย์หน้าหายเมื่อเปิดด้วย Excel

Excel เดาชนิดข้อมูลของทุกคอลัมน์เองโดยไม่ถาม ค่าที่เป็นตัวเลขล้วนถูกอ่านเป็นจำนวน ศูนย์นำหน้าจึงหาย และเมื่อกด save ค่าเดิมหายถาวร ทางแก้คือส่งเป็น .xlsx ที่กำหนดคอลัมน์เป็นข้อความไว้ในไฟล์ หรือปิด Automatic Data Conversion ใน Options ของ Excel รุ่นที่รองรับ
