- ผมมีเวลาไม่มาก ขอแบบสรุปเลยได้ไหม ว่าท่านกำลังพูดถึงอะไร
- ในการสร้างเว็บเพจ (HTML ไฟล์) ที่มีเนื้อหาเป็นภาษาไทย ควร
ใส่ข้อความเพื่อบ่งบอกว่า เว็บเพจของท่านมีข้อความที่เป็นภาษาไทย
เพื่อที่ Browser จะสามารถที่จะเข้าใจ และแสดงผลภาษาไทยได้ถูกต้อง
อีกทั้งยังเป็นประโยชน์ในการค้นหาข้อมูลของ
search engine ต่างๆ ที่จะรับทราบว่าเนื้อหาในเว็บเพจของท่านเป็นภาษาไทย
- วิธีการทำได้โดยง่าย โดยเพียงเพิ่มบรรทัดดังตัวอย่างในส่วนหัวของ
HTML ไฟล์ของท่าน
<head>
<meta http-equiv="Content-Type" content="text/html; charset=tis-620">
</head>
- 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 ังกล่าวได้กลาย
เป็นวิธีที่เป็นมาตรฐานแล้ว
โดยระบบที่สนับสนุนการใช้หลายรหัสอักขระต้องมีวิธีระบุcharacter set อย่างใดอย่างหนึ่ง
เพื่อแยกความแตกต่าง เช่น การระบุที่ส่วนหัวของเอกสารสำหรับ HTML
(ดังที่จะแนะนำต่อไป) นอกจากนี้ยังสามารถใช้
escape sequenceเพื่อสลับภาษา (เช่น ใน Emacs ซึ่งใช้ISO/IEC 2022)
หรือใช้Unicode (ซึ่งใช้ได้ในHTMLเช่นกัน แต่อยู่นอกเหนือขอบเขตของบทความนี้)
- แล้ว 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
- พอเข้าใจแล้ว ทีนี้ ถ้าจะแปะหน้าข้อมูลของข้าพเจ้าให้ชาวโลกรู้ว่าเป็นภาษาไทย
ต้องทำอย่างไร
- ถ้าเป็น Web Site (HTML file) สามารถทำได้โดยง่ายโดยเพียงเพิ่มบรรทัด
<head>
<meta http-equiv="Content-Type" content="text/html; charset=tis-620">
</head>
เข้าไปยังส่วนหัวของ HTML ไฟล์ของท่าน เพียงเท่านี้ก็เป็นอันเสร็จสิ้น
- ในจดหมายอิเล็กทรอนิกส์ ติดตั้งให้โปรแกรมรับส่งจดหมายอิเล็กทรอนิกส์ของท่าน
ให้ระบุในจดหมายว่า ข้อความของท่านถูกเข้ารหัสด้วย character-set
tis-620 (วิธีการแตกต่างกันไปตามแต่ละ E-mail program)
- ปัจจุบันนี้ ข้าพเจ้าไม่เห็นจะต้อง set อะไร ชาวบ้านชาวช่องก็สามารถจะดู
Web Site ของข้าพเจ้าได้ ถ้าตั้ง character set ดังที่ว่าแล้วจะได้ประโยชน์อะไรขึ้นมา
- วิธีการระบุ character set เป็นวิธีที่ถูกต้องทั้งทางหลักการและทางปฏิบัติ
Browser ที่เป็นที่นิยมใช้ในปัจจุบัน สามารถจะรับรู้ character-set ที่ท่านตั้งไว้
และเลือกแสดงเป็นภาษาไทยได้อย่างถูกต้องโดยที่ไม่ต้องติดตั้งค่าอะไรเพิ่่มเติม
- Search engine ที่มาค้นข้อมูลในเพจของท่าน สามารถจะแยกแยะได้ทันทีว่านี่คือภาษาไทย
ไม้มลายในเพจของท่านจะมีความหมายไม้มลาย Search engine จะไม่คิดว่ามันเป็น a
umlaut อย่างแน่นอน
- Browser อะไรบ้างที่รู้จัก tis-620
- Browser ที่ทันสมัยทุกเวอร์ชั่นรู้จัก tis-620
- Internet Explorer เวอร์ชั่น 5.5 ขึ้นไป
- Netscape Communicator Version 6 ขึ้นไป
- Mozilla
- Konqueror (KDE)
- Netscape Version 4 หรือตำ่กว่า ไม่สนับสนุน tis-620
- การที่ Browser ไม่สนับสนุนไม่ได้หมายความว่า การใส่ character set
เป็น tis-620 จะไม่มีประโยชน์ เพียงแต่จะไม่มีผลกระทบใดๆ ท่านจำเป็นต้องใช้กลเม็ด
เพิ่มเติมที่จะทำให้ผู้ใช้อ่านภาษาไทยได้ต่อไป แต่ถ้าภายหลังผู้ใช้ upgrade Browser เป็น
เวอร์ชั่นใหม่เมื่อใด ก็สามารถใช้ประโยชน์จาก character set ที่ตั้งไว้ทันที
-
- เว็บ ของผมใช้วิธีระบุ <FONT face=AngsanaUPC>...</FONT>
อยู่ ก็สามารถบังคับให้ Browser แสดงฟอนต์ไทยที่ต้องการได้ ก็ไม่เห็นจะมีปัญหาอะไร
ทำไมต้องตั้ง character set ให้ยุ่งยาก
- วิธีระบุชนิดของฟอนต์ดังกล่าวนั้น เป็นการบอกว่า ในช่วงข้อความนี้
ถ้า Browser ของผู้เรียกดู Web ของท่าน มีฟอนต์ดังกล่าว ก็ขอให้ใช้ฟอนต์นั้นในการแสดงผล
- แต่วิธีนี้ไม่ได้บอกแต่อย่างใดเลยว่าเอกสารของท่านเป็นเอกสารภาษาไ
ทย
- การระบุ <FONT face> เป็นสิ่งที่ทำได้ แต่ควรต้องควบคู่ไปกับการระบุ
character set ด้วย
- การที่ใช้ระบุแต่ <FONT face> โดยที่ไม่ได้ระบุ character
set มีข้อเสียดังนี้
- ถ้าเครื่องของผู้เรียกดู Web ของท่าน ไม่มีฟอนต์ดังกล่าว
ก็จะนำฟอนต์อื่นๆ (ที่อาจจะไม่ใช่ฟอนต์ภาษาไทย) มาใช้ในการแสดงผล ทำให้ไม่สามารถอ่านภาษาไทยได้ตามต้องการ
- เว็บเพจของท่านจะไม่มีความหมายในทางข้อมูลว่าเป็นภาษาไทย
ไม่สามารถนำไปประมวลผลในทางภาษาต่างๆ ได้ เนื่องจากผู้คนทั่วโลกจะไม่เข้าใจว่า
มันเป็นภาษาไทย
- ปัจจุบัน ในทุกระบบปฏิบัติการมีการใช้ฟอนต์แบบ Unicode (2 byte)
กันอย่างแพร่หลาย ฟอนต์แบบ Unicode สามารถเก็บรหัสอักขระได้ถึง 2^16 = 65,536 ตัว
เก็บได้เกือบทุกภาษาในโลก การใช้ฟอนต์ Unicode ในการแสดงผลนั้น จำเป็นอย่างยิ่งที่
จะต้องทราบว่า เอกสารนี้เป็นภาษาใด เพื่อจะ Browser จะได้เลือกส่วนภาษานั้นๆ จาก
ฟอนต์ Unicode (ซึ่งมีหลายภาษามาก) ออกมาแสดงผล ถ้าท่านระบุ Font face เป็นฟอนต์แบบ
Unicode แต่ว่าไม่ระบุภาษา แล้ว Browser จะรู้ได้อย่างไรว่า ควรจะหยิบส่วนภาษาไทย
ของฟอนต์นั้นๆ ออกมาแสดง?
- ผมใช้วิธีติดตั้ง character set เหมือนกัน แต่ว่าตั้งเป็น windows-874
ก็พบว่าใช้งานได้ดี Browser เรียกใช้ฟอนต์ภาษาไทยโดยอัตโนมัติ ทำไมต้องเปลี่ยนเป็น
tis-620
- ในทางเทคนิคแล้ว 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 จะมีผลกับทุกระบบปฏิบัติการ
รวมทั้งระบบปฏิบัติการของไมโครซอฟต์ด้วย
- ผมใช้วิธีติดตั้ง character set เหมือนกัน แต่ว่าตั้งเป็น x-user-defined
ใช้ได้เหมือนกันไหม
- ไม่ได้ การใช้ character set นั้น มีขึ้นในยุคอดีต ที่เรายังไม่มี
tis-620 ก็จึงใช้ x-user-defined ซึ่งทำให้ผู้ใช้ต้องตั้งที่ Browser ว่าควรจะใช้ฟอนต์ใดดีสำหรับ
character set x-user-defined นี้ (ถ้าท่านเคยใช้ Netscape จนถึง Version 4
คงจำกันได้ดี ว่าท่านต้องติดตั้งค่าฟอนต์กันวุ่นวายก่อนที่จะเริ่มใช้งานภาษาไทยได้)
- ปัจจุบันนี้เรามี tis-620 แล้ว และ Netscape ก็มีถึงเวอร์ชั่น
6 แล้ว รวมถึง Mozilla ซึ่งจะเป็นอนาคตของ Netscape browser นอกจากนี้ Internet
Explorer ก็ทำงานได้ดี เรียกได้ว่าเรามีทุกอย่างที่ทันสมัยและถูกต้องตามหลักการแล้ว
ไฉนใยจึงย้อนกลับไปใช้วิธีแก้ขัดอย่างสมัยก่อนอีก เปรียบได้กับยามน้ำท่วมเราก็เอากระสอบทรายมากั้นน้ำชั่วคราว
ไม่ให้น้ำเข้าบ้าน ซึ่งก็เป็นสิ่งที่ถูก แต่เวลานี้น้ำลด ก็ควรใช้วิธีการสร้างที่ถูกต้องตามหลักวิชา
วิเคราะห์สาเหตุ ขุดลอกคูคลองให้ถูกต้องไป แทนที่จะมาต้องใช้กระสอบทรายกันอีก
- ตัวอย่าง Web Site ที่ได้ทำการตั้ง Character set ให้เป็น tis-620
แล้วมีไหม จะทำการทดสอบได้อย่างไร
- ท่านสามารถทดลองใช้ Browser ต่างๆ ที่แสดงไว้ในคำถามข้อก่อนหน้านี้
ไม่ว่าจะทำการบนระบบปฏิบัติการใด (ที่มีฟอนต์ไทยติดตั้งอย่างถูกต้อง)
ลองชี้ไปที่ Web site เหล่านี้ ผลที่ได้คือ
Browser เหล่านั้น ควรจะแสดงภาษาไทยได้อย่างถูกต้อง โดยที่ไม่ต้องเลือกภาษา,
encoding อะไรพิเศษแต่อย่างใด
รายละเอียดเพิ่มเติม
สงวนลิขสิทธิ์แบบ GPL โดย ภัทระ เกียรติเสวี
$Id: tis-620.html,v 1.3 2002/12/09 12:05:27 ott Exp $
|