ทำไม การพิมพ์ภาษาไทย ในการส่งข้อความ ถึงกินเนื้อที่มากกว่า / และทำไม ซิมถึงไม่พัฒนา ให้มีหน่วยความจำมากกว่านี้ครับ

พิมพ์​อังกฤษ ได้ 160อักขระ


พิมพ์อักษรไทยได้ 70อักขระ
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 3
• SMS อาศัย เนื้อที่ว่างของ Protocol การเชื่อมต่อโทรศัพท์ ที่เรียกว่า SS7 มาประยุกต์ ครับ
   (SS7 Signalling System No 7 คร่าวๆ  คือ ขั้นตอนการเชื่อมสัญญาณ ระหว่างมือถือ ตอนที๋โทรหากัน แล้วพอเชื่อมติด ก็จะหมดหน้าที่ไป)


•  เนื้อที่ว่างของ SS7 ที่เอามาประยุกต์ใช้กับ SMS เรียกว่า Mobile Application Part
    มีเนื้อทีว่างอยู่ 1120 bit




•  ในเมื่อ อยากส่งให้ได้ข้อมูลมากที่สุด (สมัยก่อน) จึงใช้ อักษร ขนาด 7 bit
    เช่น
    z = 7A16  = 111 10102
    Z = 5A16  = 100 10102


    1120 หารด้วย 7 = 160
            ดังนั้น ก็จะส่งได้ 160 ตัวอักษรภาษาอังกฤษ




ซึ่งตาราง GSM 03.38 แบบ 7 bit สำหรับภาษาอังกฤษ เป็นดังนี้ ครับ
จะเห็นว่า
    z = 7A16  = 111 10102
    Z = 5A16  = 100 10102










• แต่เมื่อนำมาใช้กับภาษาอื่น ก็ต้องขยายตาราง ก็เลยต้องใช้ 16 bit เพื่อรองรับได้หลากหลายภาษา

    (ตัว app ที่ส่ง SMS จะตรวจเอง ว่า เนื้อหามีแค่อังกฤษ+สัญลักษณ์ล้วน เป็น 7 bit ทั้งหมดได้หรือไม่
    ถ้าไม่ได้ คือ มีอักษรอื่นปนมา ก็จะปรับไปใช้ 16 bit ให้เองโดยอัตโนมัติ)

     1120 หารด้วย 16 = 70
            ดังนั้น หากมีอักษรอื่นปน ก็จะส่งได้ 70 ตัวอักษร

ครับ


สำหรับภาษาไทย ได้ตาราง ที่ 0E0016 ครึ่งแรก คือ 0E0016 - 0E7F16
ภาษาลาว ได้ตารางที่ x0E0016 ครึ่งหลัง คือ 0E8016 - 0EFF16
ส่วนภาษาอังกฤษ ก็ได้ตารางที่ x0000 (ฐาน 16)

นั่นคือ อักษรไทยหรือลาวต้องนำหน้าด้วย 0E / อังกฤษต้องนำหน้าด้วย 00
เช่น  
ส = 0E2A16
ว = 0E2716
z = 007A16
Z = 005A16

ดังตัวอย่างตารางนี้

(ภาพจาก https://www.thaicert.or.th/papers/technical/2014/pa2014te001.html ครับ)


หากอยากดูตารางอักษรไทย
http://www.unicode.org/charts/PDF/U0E00.pdf

หากอยากดูตารางอักษรลาว
http://www.unicode.org/charts/PDF/U0E80.pdf







ดังนั้นหากส่ง คำว่า  
Hi A  
     เครื่องจะพบว่า ใช้แค่ 7 bit ก็พอ .... ก็จะได้    
     48     69     20    41
     กินเนื้อที่ = 28 bit
แต่หากส่งคำว่า
Hi เอ
     เครื่องจะพบว่า ต้องใช้แบบ 16 bit  ..... ก็จะได้
     0048 0069 0020 0E40 0E2D
     กินเนื้อที่ = 80 bit

จากเนื้อที่ ที่มีไว้แบ่งสรร แค่ 1120 bit ครับ






แถม

• ภาษาอังกฤษ แบบ 160 ตัว
     ถ้าส่งคราวเดียวเกิน 160 จะมีการแบ่งส่ง 2 ส่วน
     แต่ในการแบ่งส่ง ต้องมีตัวเชื่อม ดังนั้น จะเหลือข้อความละ 152 ตัวอักษร แบ่งเป็น 2 ข้อความ

• ภาษาอื่น ๆ แบบ 70 ตัว
     ถ้าส่งคราวเดียวเกิน 70 จะมีการแบ่งส่ง 2 ส่วน
     แต่ในการแบ่งส่ง ต้องมีตัวเชื่อม ดังนั้น จะเหลือข้อความละ 67 ตัวอักษร แบ่งเป็น 2 ข้อความ

ครับ




SS7 เริ่มใช้ประมาณปี 2518
SMS เริ่มใช้ประมาณปี 2535



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