2011/05/18

ทำไมส่ง SMS ที่มีภาษาไทยได้แค่ 70 ตัวอักษร

บางคนอาจจะสงสัยว่าทำไมส่งข้อความ SMS เป็น ภาษาไทยทำไมส่งได้แค่ 70 ตัวอักษรวันนี้ผมก็เพิ่งรู้และ จากการหาข้อมูลมาผมจะสรุปสั้นๆดังนี้ครับ


ข้อความที่เป็นภาษาไทยเวลาส่งข้อความออกไปจะถูก encode ข้อความทั้งหมดให้เป็น PDU Mode ( Pdu คือ โหมดๆหนึ่งที่เอาไว้อ่านหรือเขียนเพื่อส่ง sms ) ซึ่งข้อความทั้งหมดจะอยู่ในรูปของ hex (เลขฐาน16) เมื่อข้อความที่เป็นภาษาไทยถูก encode จะถูกเปลี่ยนไปเป็น UTF-16/UCS2 หรือพูดภาษามนุษย์ไอทีคือ มันใช้พื้นที่ขนาด 2 bytes หรือ 16 bits ในการเก็บข้อมูล ซึ่งต่างจาก ภาษาอังกฤษล้วน เมื่อถูก encode จะอยู่ในรูป UTF-8 ซึ่งใช้พื้นที่ 1 byte หรือ 8 bits ในการเก็บข้อมูลซึ่ง sms ถูกกำหนดไว้ว่าข้อมูลที่ส่งต่อหนึ่งครั้งต้องไม่เกิน 140 bytes หรือ 140 ตัวอักษร (140 นี้แค่ Msg Body เท่านั้น) ดังนั้นถ้าเป็นภาษาไทยต้องเอา 2 หารเพราะมันกินพื้นที่เป็น 2 เท่า จาก 8 bits เป็น 16 bits ฉะนั้นมันจึงส่งได้เพียงแค่ 70 ตัวอักษร หวังว่าคงจะอ่านเข้าใจกันนะครับ เพราะผมขี้เกียจวาดรูป ไปละครับ บาย.