UTF-8 with BOM กับ UTF-16 LE/BE ต่างกันยังไงครับ

สวัสดีครับ

บังเอิญจะ Save file ของ Notepad เป็นภาษาไทยครับ แต่เห็นใน Encoding มีให้เลือกแค่ ANSI กับ UTF (8 กับ 16) 

โดยปกติใน Notepad ถ้าเป็นภาษาไทยผมจะเลือกแต่ Unicode คราวนี้มีให้เลือก หลายแบบเลยไม่รู้ว่า ถ้าจะ Save เป็นภาษาไทยควรจะเลือกตัวไหนครับ

และ แต่ล่ะแบบ ต่างกันยังไงครับ รบกวนผู้รู้ช่วยอธิบายด้วยครับ

คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 3
> โดยปกติใน Notepad ถ้าเป็นภาษาไทยผมจะเลือกแต่ Unicode

จะว่าไปแล้ว ตัวเลือกนี้ไม่ควรมีครับ เพราะในทางเทคนิคแล้วมันไม่มีความหมาย

Unicode เป็นแค่การกำหนดว่ารหัสตั้งแต่ 0 - 1,114,112 (0x10ffff) แต่ละรหัสใช้แทนตัวอักษรใด เช่น
- 65 (0x0041) คือตัว A
- 97 (0x0061) คือตัว a
- 3585 (0x0e01) คือตัว ก.ไก่
- 3618 (0x0e22) คือตัว ม.ม้า
- 128512 (0x01f600) คือตัวอีโมจิรูปหน้ายิ้ม 😀

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

- วิธีแรกก็ตรงไปตรงมา ในเมื่อ Unicode เป็นรหัส 32 บิต ก็เก็บข้อมูลทีละ 32 บิตลงไปเลย นั่นหมายความว่าข้อมูลแต่ละตัวอักษรก็จะใช้เนื้อที่ 32 บิต หรือ 4 ไบต์ ทำให้ข้อมูลเอกสารที่เป็นตัวอักษรจากเดิมเก็บ 1 ตัวอักษรใช้เนื้อที่ 1 ไบต์ ก็จะใช้เนื้อที่เพิ่มเป็น 4 เท่า จึงทำให้แทบไม่มีการใช้งานวิธีนี้เลย วิธีนี้คือการเก็บข้อมูล Unicode แบบ UTF-32

- วิธีที่สอง เนื่องจากรหัส Unicode ส่วนใหญ๋มีค่าไม่เกิน 65535 ซึ่งพอที่จะใช้เนื้อที่ 2 ไบต์ หรือ 16 บิตเก็บได้ ตัวไหนเกินก็จะใช้รหัสพิเศษในการเก็บเป็น 16 บิต 2 ตัว วิธีนี้คือ UTF-16 ซึ่งสามารถเลือกได้ว่าจะเอาไบต์ไหนก่อนหลังตามประเภทของ CPU และแยกออกเป็น Big Endian (UTF-16BE) และ Little Endian (UTF-16LE)

- วิธีที่สาม คือ UTF-8 เป็นวิธีที่ปัจจุบันมีการใช้งานกันมากที่สุด โดยเป็นการเก็บข้อมูลแบบความยาวไม่คงที่ ตัวอักษรเดิมจาก ASCII จะใช้เนื้อที่เพียง 1 ไบต์ ส่วนตัวอักษรประเภทอื่นก็จะใช้เนื้อที่ 2 - 4 ไบต์โดยจะมีรหัสพิเศษสำหรับระบุว่าตัวอักษรใดจะใช้เนื้อที่กี่ใบต์ ซึ่งสำหรับภาษาไทยจะใช้เนื้อที่ 3 ไบต์

แต่ก็อาจจะเป็นไปได้ว่าที่โปรแกรมบอกว่าจัดเก็บแบบ Unicode นั้น จริง ๆ แล้วคือการเก็บแบบ UTF-8 เพราะเป็น encoding ที่ใช้กันมากที่สุดแล้ว
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่