รู้จักกับ Character Set กันสักนิดนะครับ

มีหลายคนยังไม่คุ้นเคย หรือไม่เข้าใจกับคำว่า “Character Set” ยังไงก็ขอนำเอาเนื้อหาจาก ดร.ภัทระ เกียรติเสวี มาเล่าให้ฟังกันนะครับ

character-set คืออะไร ทำไมต้องมี character set

  • คอมพิวเตอร์เก็บข้อมูลโดยรหัสดิจิทัล 0 กับ 1
  • รหัส 1 ตัว เรียกว่าเป็น 1 bit, รหัส 8 bit เรียกว่าเป็น 1 byte
  • พยัญชนะภาษาอังกฤษ มี 26 ตัว คิดแยกเป็นตัวใหญ่ตัวเล็ก รวมตัวเลขและอักษรพิเศษต่างๆ แล้ว ก็ยังมีจำนวนไม่มาก (ไม่มากคือประมาณ 100 ตัว)
  • ผู้ที่คิดค้นคอมพิวเตอร์ในยุคแรกๆ นั้นเป็นผู้ที่ใช้ภาษาอังกฤษ ดังนั้นจึงคิดค้น ระบบการเก็บข้อมูลโดยใช้รหัสยาว 7 บิต (ASCII) สามารถเก็บอักขระต่างๆ ได้ แตกต่างกันทั้งหมด 2^7 ตัว = 128 ตัว นับว่าเพียงพอสำหรับการใช้งานทั่วไป เช่น ตัวอักษร A จะตรงกับรหัส ASCII 65 เขียนเป็นเลขฐาน 2 เรียงกัน 7 ตัวได้ดังนี้ 100 0001
  • ต่อมาคอมพิวเตอร์ได้แพร่หลายไปยังประเทศที่ไม่ได้ใช้แค่ภาษาอังกฤษ  ได้มีวิธีการแก้ไขแบบเฉพาะหน้า โดยการเพิ่มความยาวของรหัสที่เก็บจาก 7 ตัว ให้เป็น 8 ตัว ก็จะสามารถเก็บอักษรได้ทั้งหมดเป็น 2^8 = 256 ตัว
  • ประเทศต่างๆ ก็สามารถใช้ส่วนที่เกินมาอีก 128 ตัวนั้น ใช้เก็บรหัสอักขระเพิ่มเติม ที่เป็นเฉพาะของภาษาตนเอง เช่น กลุ่มประเทศยุโรปแถบตะวันตก ก็จะใช้เก็บอักขระเช่น อักขระที่มีลักษณะคล้าย a, e, i แต่มันจุดหรือมีขีดอยู่บนตัวอักษรเหล่านั้น (ซึ่งใช้กันในภาษาของพวกเขา) ตัวอย่างเช่น รหัส 228 จะเป็นตัว a umlaut คือ a แล้วมีจุดอยู่ข้างบน 2 จุด ใช้กันในภาษาเยอรมันเป็นต้น
  • ประเทศไทยก็ได้ใช้ประโยชน์ของรหัส 128 ตัวที่เกินมานี้เช่นกัน เช่น เราเก็บรหัส ก ไก่ ไว้ที่หมายเลข 161, เราเก็บไม้มลาย “ไ” ไว้ที่รหัสหมายเลข 228 เป็นต้น
  • ดังที่กล่าวมาแล้วนั้น เราจำเป็นต้องมีตารางที่จะแสดงว่าหมายเลขอะไร หมายถึงตัวอักษรอะไร ตารางนี้ก็จะแตกต่างกันไปในแต่ละภาษา ซึ่งมีอักขระซึ่งต่างๆ กัน
  • ดูๆ ไปแล้ว ก็ยังไม่เห็นว่าจะมีปัญหาอะไร ตราบใดที่ในเครื่องคอมพิวเตอร์ของท่าน มีใช้งาน แค่ 2 ภาษา เช่น ภาษาไทย กับ ภาษาอังกฤษ ถ้าท่านได้รับรหัสมามีค่า 228 ก็สรุปได้เลยว่าผู้ส่งต้องการจะส่งไม้มลาย มา
  • แต่หากท่านต้องการจะส่งข้อมูล ไปยังเครื่องคอมพิวเตอร์เครื่องอื่น หรือเปิด Web Site ให้ผู้คนจากทั่วโลกเข้ามาดู ที่ไม่ได้ใช้ภาษาไทยอยู่ด้วย ผู้คนเหล่านั้นจะเข้าใจได้อย่างไรว่า ท่านต้องการส่ง ไม้มลาย ซึ่งเป็นอักขระหนึ่งของภาษาไทย?
  • ถ้าคนเยอรมันได้รับรหัสนั้น ย่อมต้องแปลความหมายของรหัส 228 ที่ท่าน ส่งไปว่าเป็นอักขระ a umlaut ที่พวกเขาใช้กัน? เขาควรจะรู้ได้อย่างไรว่า เขาควรจะหยิบตารางที่ใช้แปลงค่ารหัสเป็นภาษาไทย แทนที่จะใช้ตารางของภาษาเยอรมัน?
  • วิธีแก้ปัญหานั้นก็ง่ายดาย เพียงแต่ระบุแปะหน้าไปว่าข้อมูลของท่านนั้น ขอให้ใช้ตารางสำหรับภาษาไทยในการถอดรหัส
  • สิ่งที่ระบุแปะหน้าไปนั้น ก็เป็นที่เรียกกันว่า character set

แล้ว character set ของภาษาไทยมีหรือไม่? ถ้ามีมีชื่อว่าอะไร

  • มี และมีชื่อว่า tis-620, tis-620 เป็นที่ยอมรับกันในมาตรฐานสากล [คัดลอกจาก http://software.thai.net/tis-620/index.html ประเทศไทยมีมาตรฐานอักขระซึ่งกำหนดโดย สำนักงานมาตรฐานอุตสาหกรรม ดังที่เรียกกันโดยทั่วไปว่ารหัส สมอ. แต่รหัส สมอ. หรือที่มีชื่อทางการว่า มอก.620 หรือ TIS-620 นี้ เป็นมาตรฐานของประเทศไทย ซึ่งเมื่อนำไปใช้บนเครือข่ายอินเทอร์เน็ต ก็อาจเกิดความเข้าใจไม่ตรงกันได้ ดังนั้นจึงมีความพยายามที่จะจดทะเบียน รหัส สมอ. ที่ Internet Assigned Numbers Authority (IANA) ซึ่งเป็นผู้ควบคุมมาตรฐานของเครือข่ายอินเทอร์เน็ต และได้ดำเนินการจดทะเบียนจนสำเร็จ เมื่อวันที่ 22 กันยายน 2541

แล้ว character set ของภาษาอื่นๆ มีเช่นอะไรบ้าง

  • ภาษาของประเทศแถบยุโรปตะวันตก iso-8859-1
  • ภาษาของประเทศแถบยุโรปกลาง iso-8859-2
  • ภาษาญี่ปุ่น ใช้ euc_JP, iso-2022-jp และ Shift_JIS

windows-874 คืออะไร

  • ในทางเทคนิคแล้ว windows-874 เป็น character set ที่เป็น superset ของ tis-620 (คำว่า super set หมายถึงว่า อะไรที่ tis-620 มี นั้น windows-874 มี) ดังนั้น เมื่อดูผลที่ออกมาจึงทำงานได้เหมือนกันทุกประการ
  • windows-874 เป็น character set ที่ใช้ภายในระบบปฏิบัติการที่ผลิตโดยบริษัท ไมโครซอฟต์ เท่านั้น ไม่ได้เป็น character set ที่ใช้ในการแลกเปลี่ยนข้อมูลระหว่างเครื่อง
  • tis-620 เป็น character set ที่จดทะเบียนถุกต้อง เป็นที่รับรู้กันทั่วโลก ทุกระบบปฏิบัติการ (แม้แต่ระบบปฏิบัติการของไมโครซอฟต์เอง)
  • windows-874 มีส่วนขยายเพื่อการแสดงผล เช่น bullet, smart quote, dash ฯลฯ ซึ่งไม่มีใน tis-620 และไม่มีในระบบปฏิบัติการอื่น ซึ่งจริงๆ แล้วไม่ได้เป็นเรื่องผิด ที่จะมีส่วนขยาย เพื่อที่จะใช้ภายในการทำงานของระบบปฏิบัติการเอง แต่ว่าเป็นเรื่องผิด ถ้านำไปใช้ใน การรับส่งข้อมูลระหว่างเครื่อง ระบบปฏิบัติการอื่นจะไม่เข้าใจรหัสเพิ่มเติมเหล่านี้ (และในทำนองเดียวกัน ในระบบปฏิบัติการอื่นๆ ก็จะมีส่วนขยายเพิ่มเติมภายใน ที่ ระบบปฏิบัติการของไมโครซอฟต์ไม่เข้าใจเช่นกัน)
  • การที่ตั้งเป็น windows-874 จะมีผลกับแค่ Browser ที่ทำงานอยู่บนระบบปฏิบัติการของไมโครซอฟต์เท่านั้น
  • การที่ตั้งเป็น tis-620 จะมีผลกับทุกระบบปฏิบัติการ รวมทั้งระบบปฏิบัติการของไมโครซอฟต์ด้วย

นอกจาก TIS-620 และ Windows-874 ปัจจุบันยังมี UTF-8 ด้วย โดย UTF-8 คือการเข้ารหัสชุดอักขระที่ใช้ชุดข้อมูล 1 ถึง 4 byte เพื่อแทนตัวอักษรเกือบทั้งโลก โดยใช้หลักการใช้ชุดข้อมูลแบบความยาวไม่คงที่ แทนตัวอักขระเป็นชุดๆ ไป

  • รหัสตัวอักษรภาษาอังกฤษตามมาตรฐาน ASCII แทนด้วย 7 บิตในไบต์แรกหรือ 128 ตัวอักษรแรกคือ ASCII Code
  • ส่วนอีก 1,920 ตัวอักษรถัดไปซึ่งใช้สองไบต์จะเป็นตัวอักษรในภาษา Latin พร้อมกับ diacritics (อักษรที่มีตัวกำกับการออกเสียง) รวมทั้งตัวอักษรภาษาอื่นๆ ที่ใช้กันมากได้แก่ Greek, Cyrillic, Coptic, Armenian, Hebrew, Arabic, Syriac และ Tāna
  • ชุดอักขระสามไบต์จะเป็น Multilingual Plan ซึ่งอักขระภาษาไทยของเราอยู่ในชุดนื้
  • ชุดข้อมูลสี่ไบต์จะใช้สำหรับการทำงานอื่นๆ

thai-encoding02
รูปการแสดงผลภาษาไทยจากเอกสาร Web ที่สร้างด้วย Dreamweaver โดยกำหนด Character Set เป็น ISO-8859-1

thai-encoding01
รูปการแสดงผลภาษาไทยจากเอกสาร Web ที่สร้างด้วย Dreamweaver โดยกำหนด Character Set เป็น UTF-8

Number of View :6973
Share
This entry was posted in ภาษาไทย and tagged , , , , , , , , , , , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>