| 
         
        ผมมีเวลาไม่มาก ขอแบบสรุปเลยได้ไหม ว่าท่านกำลังพูดถึงอะไร
         
	  ในการสร้างเว็บเพจ (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: index.html,v 1.9 2001-11-19 20:02:55 ott Exp $
 
 |