ส่วนนี้จะพูดถึง มาตรฐานเกี่ยวกับ ภาษาไทยบนคอมพิวเตอร์ รวมทั้งการใช้งานข้อมูลภาษาไทย และ การแสดงข้อมูลให้เหมาะสมกับท้องถิ่น (Localization) สำหรับภาษาไทยด้วย
TIS-620 หรือ มอก. 620 หรือที่เรียก กันทั่วไปว่า รหัส สมอ. เป็นมาตรฐานของรหัสตัวอักษร (Charset Code) ที่ใช้บนคอมพิวเตอร์ ซึ่งกำหนดโดยสำนักงานมาตรฐานอุตสาหกรรม หรือ สมอ. (Thai Indrustial Standards Institute [TISI]). TIS-620 เป็นรหัสตัวอักษรที่ต่อเพิ่มจากรหัสตัวอักษรของ ISO-646 ซึ่งเป็น รหัสตัวอักษรแบบ 7 bit คล้าย ๆ ASCII
มาตรฐาน TIS-620 ตัวแรกคือ TIS-620 2529 (1986) ซึ่งได้มีการแก้ไขเพิ่มเติมอีก ในปี 2533 เป็น TIS-620 2533 (1990) เพื่อเพิ่มเนื้อหาบางส่วนให้สอดคล้องกับ ISO/IEC 2022 แต่ตารางรหัสตัวอักษรทั้งหมดยังคงเหมือนเดิม
ปัจจุบัน GNU C library (GLIBC) ได้สนับสนุนมาตรฐาน TIS-620 ในการใช้งาน สำหรับกับท้องถิ่นประเทศไทยและภาษาไทย ภายใต้ชื่อ th_TH (th_TH.TIS-620)
รหัสตัวอักษรแบบ 8 bit ของ TIS-620 คล้ายกับ กับรหัสตัวอักษรในระบบ ISO/IEC 8859 มาก เนื่องจาก สมอ. (TISI) นั้นไม่ประสบความสำเร็จมากนักในนการกระตุ้นให้ TIS-620 เป็นมาตรฐาน จึงได้คิดจะ ใส่ไว้ในระบ ISO/IEC 8859 แทน เพื่อห้ ในระบบอุตสาหกรรมต่าง ๆ หันมาใช้ตาราง รหัสภาษาไทย ตามมาตราฐาน มากขึ้น ตารางนี้ได้รับการใส่ไว้ในส่วนที่ 11 (Part 11) ของมาตรฐาน ISO/IEC 8859 ถึงแม้จะมีการปฏิเสธการใช้มาตรฐานนี้เนื่องจากภาษาไทยนั้นต่างจากภาษา แบบละติด ตรงที่มีต้องมีการประกอบตัวอักษรเข้าด้วยกัน แต่ในภายหลัง ก็มีการผลักดันให้ ISO/IEC 8859 Part 11 ผ่านในที่ประชุม ISO และประกาศเป็นทางการในปลายปี พ.ศ. 2544
โปรแกรมในปัจจุบันได้เริ่มออกแบบให้สามารถใช้ได้หลายภาษา (multilingual) โดยใช้ มาตรฐานของตัวอักษร ของ ISO/IEC 10646 (Universal Multi-octet Coded Character Set - UCS) ซึ่งเป็นระบบสำหรับเก็บข้อมูลตัวอักษรสากลในระบบ 8bit (หรือ byte) ซึ่งอาจอยู่ในรูป 8 bit หลาย ๆ ตัวต่อกัน และรู้จักกันดีในชื่อ Unicode UCS หรือ UTF-8
Unicode Consortium ได้รับการก่อตั้งขึ้นมา ก่อนที่ ISO/IEC จะกำหนดมาตรฐาน ISO/IEC 10646 นี้ขึ้นสำหรับเป็นมาตรฐานสากล ในปัจจุบัน Unicode Consortium เป็นคณะกรรมการ และเป็นผู้ลงคะแนนร่วมกับผู้แทนจากหลาย ๆ ประเทศสมาชิก ในการร่างและกำหนดมาตรฐาน เกี่ยวกับ Unicode ด้วย
สำหรับข้อมูลอื่น ๆ ที่เกียวกับ Unicode หรือ UCS บนลินุกซ์ สามารถอ่านได้จาก UTF-8 and Unicode FAQ for Unix/Linux ครับ
สำหรับรหัสตัวอักษรต่าง ๆ ของภาษาไทยบน Unicode และ ISO/IEC 10646-1 นั้น ได้ถูกจัดให้ อยู่ในลำดับที่ 0x0E00-0x0E7F ซึ่งมีการเรียงลำดับตัวอักษรเหมือนกับในมาตรฐาน TIS-620 ในลำดับ 0xA0-0xFF ครับ
สำหรับข้อมูลและรายละเอียดอื่น ๆ เกี่ยบกับรหัสตัวอักษรภาษาไืทย และมาตรฐานของชุดตัว อักษรไทยอื่น ๆ สามารถอ่านได้จาก An annotated reference to the Thai implementations ของ ตฤณ ตัณฑเศรษฐี ครับ และยังมีข้อมูลอื่น ๆ เพิ่มเติ่มอีกในหัวข้อ ข้อมูลอื่น ๆ ด้านล่างครับ
TIS-820 หรือ มอก. 820 เป็นมาตรฐานของแป้นพิมพ์ภาษาไทย ซึ่งกำหนดโดย สำนักงานมาตรฐานอุตสาหกรรม (สมอ.) สำหรับมาตรฐานในปัจจุบับคือ TIS-820 2538 (1995)
มาตรฐาน TIS-820 ตัวแรกคือ is TIS-820 2531 (1988) รูปแบบของแป้นพิมพ์ ใน TIS-820 2531 จะเหมือนกับแป้นพิมพ์แบบเกษมณี ที่ใช้กันบนพิมพ์ดีดภาษาไทย ต่อมา มีการกำหนดมาตรฐาน การใช้งานและรับข้อมูลภาษาไทย ซึ่งกำหนดโดย Thai API Consortium (TAPIC) ซึ่งมีชื่อว่า WTT หรือ วทท. (ย่อมาจาก วิ่งทุกที่) ซึ่งได้มีการกำหนดส่วนเพิ่มเติมให้กับ TIS-820 2531เพื่อให้ปุ่มกดบางปุ่ม ใช้งานร่วมกับภาษาละติดได้ หลังจากมีการประกาศมาตรฐาน WTT 2.0 แป้นพิมพ์ ของ TIS-820 2531 ที่มีการ เพิ่มเติมตาม วทท 2.0 ก็ได้รับการกำหนดเป็นมาตรฐานใน TIS-820 2536 (1993)
ในปี 2538 มีการปรับปรุง TIS-820 ใหม่ เป็น TIS-820 2538 ซึ่งเพิ่มเติมให้สามารถพิมพ์ตัวอักษรพิเศษบางตัวได้ และได้ย้ายัวอักษรบางตัวด้วย แต่ อย่างไรก็ตาม แป้นพิมพ์ตามาตรฐาน TIS-820 2538 ยังคงเหมือนของเดิมเกือบทั้งหมด และมีการกำหนดมาตรฐานบางอย่างให้รองรับ วทท 2.0 โดย ตัวบอก ตัวอักษรละติด กับ ไทย ต้องอยู่บนปุ่มกดและใช้สีต่างกัน
แป้นพิมพ์ของ TIS-820 นั้นยังคงใช้รูปแบบการวางปุ่มกดแบบ แป้นพิมพ์แบบเกษมณี เพียงแต่มีการแก้ไขเล็กน้อยเท่านั้น แป้นพิมพ์ของคอมพิวเตอร์ที่เป็น TIS-820 ในปัจจุบัน จึงยังคงเรียกว่า แป้นพิมพ์แบบเกษมณี ส่วนอีกแบบคือปัตตะโชตินั้นไม่ได้รับความนิยม และแทบจะไม่มีใช้ในปัจจุบัน ทั้งที่ริล้วแบบปัตตะโตินั้นพิมพ์ได้ง่ายกว่า และสิ้นเปลืองแรงน้อยกว่าเพราะสร้างขึ้นจากการวิจัยการใช้งานของนิ้วบนแป้นพิมพ์
สำหรับข้อมูลอื่น ๆ เพิ่มเติม รวมทั้งรูปแบบแป้นพิมพ์อื่น ๆ สามารถอ่านได้จาก http://www.nectec.or.th/it-standards/keyboard_layout/thai-key.htm ครับ
Thai API Consortium ได้กำหนดมาตรฐานการรับส่งข้อมูลและการจัดการเกี่ยวกับภาษาไทย เรียกว่า WTT 2.0 หรือ วทท. 2.0 (“วิ่งทุกที่”) ซึ่งปัจจุบันคือ TIS-1566 2541 (1998) สำหรับรายละเอียด สามารถดูได้จาก WTT 2.0 Thai Input and Output Method ข้อมูลเกี่ยวกับ การใช้งานตามมาตรฐาน ดูได้จาก Thai standardization and implementations โดย เทพพิทักษ์ การุญบุญญานันท์ <thep@links.nectec.or.th> และ แผ่นใส ในรูปแบบ .pdf
Internationalization (เรียกย่อ ๆ ว่า i18n) คือ ลักษณะของโปรแกรมที่สามารถปรับสภาพต่าง ๆ ในการทำงานให้เหมาะกับท้องถิ่นต่าง ๆ ได้ เช่นสามารถใช้งานได้หลายภาษา สามารถเปลี่ยนหน่วยการวัดให้เหมาะสมกับภาษาและวัฒนธรรมในที่นั้น หรือสำหรับภาษาหรือท้องถิ่นนั้นได้ในทันที และไม่ต้อง ทำการสร้างโปรแกรมขึ้นใหม่ (no-recompile) โดยการทำงานจะอาศัยรูปแบบมูลท้องถิ่น (Locale) และระบบการปรับตัวให้เข้ากับท้องถิ่น หรือ (Localization)
Localization (เรียกย่อ ๆ ว่า l10n) เป็นกระบวนการที่ใช้จัดการข้อมูลในแต่ละท้องถิ่น เช่น การแปลงข้อมูลต่าง ๆ การแสดงผล หรือการจัดการข้อมูลในภาษาต่าง ๆ Localization มีหลายระดัีบ และแตกต่างกันออกไป เช่น POSIX Locale, X Locale ขึ้นอยู่กับ ความเหมาะสมในการใช้งานของโปรแกรมนั้น ๆ ซึ่งการทำงานของ กระบวนการดังกล่าวจะอาศัยข้อมูลจากรูปแบบข้อมูลท้องถิ่น (Locale Definition)
Locale (อ่านว่า "โลแคล") หรือ รูปแบบข้อมูลท้องถิ่น เป็นส่วนหนึ่งของระบบ Internationalization (i18n) และ Localization (l10n) เพื่อให้โปรแกรมต่าง ๆ สามารถที่จะแสดง และจัดการข้อมูลในแต่ละภาษาและท้องถิ่น ได้อย่างถูกต้องเหมาะสม Locale ต่าง ๆ ของแต่ละภาษาและท้องถิ่นจะมีลักษณะเป็น ส่วน ๆ ซึ่งสามารถเพิ่มเข้าไปในระบบ Localization ต่าง ๆ ได้ และแต่ละ Locale จะเป็น อิสระจากกัน รูปแบบข้อมูลท้องถิ่นอาจจะรวมไปถึงข้อมูลสำหรับจัดการข้อความที่ซับซ้อน เช่นการจัดเรียง การตัดคำ และอื่น ๆ
ระบบ Localization ใน Linux ส่วนใหญ่จะอาศัยระบบหลัก ๆ คือ POSIX Locale ซึ่งอยู่ใน C Library เช่น GLIBC ซึ่งใน POSIX Locale การทำงานจะใช้ค่าตัวแปรระบบ (LC_...) ซึ่ง จะประกอบด้วยส่วนต่าง ๆ ดังนี้
อีกระบบที่นิยมใช้คือ ISO/IEC 14652 ซึ่งเป็นส่วนต่อขยายจาก POSIX LOCALE ซึ่งประกอบด้วย
ซึ่งสำหรับ ภาษาไทย ก็มี Locale อยู่ในชื่อ th_TH ปัจจุบันและ ใช้ได้ใน รหัสอีกษร TIS-620 (ISO/IEC 8859-11) และ UTF-8
การใช้งานปกติสามารถใช้งานได้โดยกำหนด ตัวแปรระบบ LANG เป็น th_TH หรือตัวแปร Localization ที่ต้องการ ซึ่งปกติจะใช้ รหัสตัวอักษร TIS-620 ถ้าต้องการใช้รหัสตัวอักษร อื่นให้กำหนดโดยใส่ . ตามด้วยรหัสตัวอีกษรที่ต้องการ ในปัจจุบัน ที่ใช้ได้คือ TIS-620 และ UTF-8
สำหรับข้อมูลเกี่ยวกับ Thai Locale เพิ่มเติมสามารถดูได้ที่ http://www.links.nectec.or.th/~thep/th-locale/ โดยคุณ เทพพิทักษ์ การุณบุญญานันท์ (ซึ่งปัจจุบันเป็นผู้ ดูแล Thai Locale ทั้งใน POSIX และ ISO Locale ของ GLIBC ด้วย)
ข้อมูลเกี่ยวกับมาตรฐาน IT ของไทย (และอื่น ๆ) IT Standards on Pubnet Information Servers, NECTEC.
$Id: Thai-HOWTO-2.html,v 1.4 2002-03-05 17:12:49 sf_alpha Exp $