¢ , £ , ¤, ¥, §, ©,®, ±, µ, ¶, », ¼, Ë, Ì, É, Æ, Å, À, Õ, Ú, ×, Ô, Ñ, ø, ù, ð, î , ë, þ, Ѓ, Њ, Ќ, Ў, Њ, Љ, ★
ตัวอักขระ (Character) เหล่านี้ หลายคนน่าจะเคยเห็นผ่านหูผ่านตามาบ้าง ผ่านเกมหรือเว็บไซต์ต่างๆ แต่คงจะสงสัยอย่างหนึ่งว่าผมพิมพ์ได้อย่างไร เพราะแน่นอนล่ะว่า มันไม่มีอยู่บนคีย์บอร์ด ซึ่งมันคือ ตัวอักษรพิเศษ (Special Alphabets) ตัวอักขระพิเศษ (Special Characters) และ สัญลักษณ์พิเศษ (Special Symbols) ที่อยู่บนระบบคอมพิวเตอร์ของเราทั้งนั้น เพียงแต่ว่าปกติ คุณไม่สามารถพิมพ์มันออกมาได้ด้วยการกดปุ่มตามตัวอักษรบนคีย์บอร์ด เท่านั้นเอง
หากเป็นนักโปรแกรมเมอร์ทั้งหลายอาจจะเข้าใจเรื่องนี้เป็นอย่างดี แต่สำหรับใครที่ยังสับสนเรื่องของ CharCode หรือ รหัสตัวอักขระ (Character Code) หรือที่มาของอักขระเหล่านี้ เราจะมาหาคำตอบไปพร้อมๆ กันเลย
ความหมายของ CharCode คือ ตัวอักษร อักขระพิเศษ และสัญลักษณ์พิเศษต่างๆ ที่ถูกกำหนดรหัส เอาไว้ใช้แทนความหมายของตัวเองบนระบบคอมพิวเตอร์
ตามปกติบนคีย์บอร์ดทั่วไป จะมีอักษรมาตรฐาน ที่เราคุ้นเคยเป็นอย่างดี เช่น A-Z, 0-9, ก-ฮ หรือจำพวกสัญลักษณ์พิเศษ อย่าง > < (เครื่องหมาย มากกว่าน้อยกว่า) { } (เครื่องหมายวงเล็บปีกกา) ? (เครื่องหมายปรัศนี) & (เครื่องหมายแอมเพอร์แซนด์) และ * (เครื่องหมายดอกจัน) ฯลฯ
ถึงแม้อักษรและสัญลักษณ์เหล่านี้ จะสามารถพิมพ์ได้ตามปกติด้วยแป้นคีย์บอร์ดของทุกคน แต่จริงๆ มันก็มีรหัส CharCode เป็นของตัวเองเช่นกัน และยิ่งไปกว่านั้นภายใต้ระบบคอมพิวเตอร์ที่เราใช้กัน ก็ยังมีอักขระพิเศษๆ อีกมากมายหลายพันตัวที่คุณสามารถเรียกใช้งานได้
พูดตามตรงคอมพิวเตอร์ของเรามันไม่เข้าใจหรอกว่าตัวอักษรหรือ Text ต่างๆ อย่าง A, B, C, D, ก, ข, ค, ง คืออะไร เพราะมันรู้จักแต่เลข 0 กับ 1 ในอดีตการจดจำอักขระของคอมพิวเตอร์จึงจัดเก็บในรูปแบบของตัวเลขชุด (Byte) ที่ประกอบด้วยเลขฐานสองคือ 0 กับ 1 (Binary Number) มาเรียงต่อกันเป็นจำนวน 8 บิต (bits)
ตัวอย่างเช่น
µ = 01010101 พิมพ์ด้วยการกด Alt+ตัวเลข (ภาษา Eng)
ถ้าพิมพ์ขณะใช้ภาษาไทย จะออกเป็น 'ต'
อีกความหมายของ CharCode จึงเป็นรหัสของอักษรและสัญลักษณ์ที่มนุษย์เราเองเป็นคน Encoding ใส่ให้คอมพิวเตอร์จดจำ ส่วนการถอดรหัสออกมาใช้งาน ถ้าเราไม่รู้รหัสแล้วใส่มั่วๆ มันก็ออกมาเป็นตัวแปลกๆ ข้างต้น สำหรับใครที่แตกฉานด้านนี้ เช่น พวกโปรแกรมเมอร์ (บางคน) ก็อาจจำแพทเทิร์นของรหัสได้ และพิมพ์ออกมาเป็นตัวที่ต้องการได้เลย
หน้าที่ของ CharCode มีไว้ 2 อย่าง (หรืออาจมากกว่านี้)
เอาเข้าจริงๆ แล้ว CharCode เหมือนมีต้นกำเนิด เกิดมาพร้อมกับรหัสมอร์ส (Morse code) เพียงแต่ยุคนั้นมันยังไม่มีคอมพิวเตอร์ ต่อมาในยุคของการสื่อสารผ่านโทรเลข รหัสโบคอต (Baudot Code) ที่คิดค้นโดยชาวฝรั่งเศส Émile Baudot ในปี ค.ศ. 1870 (พ.ศ. 2413) ก็ถือกำเนิดขึ้นมา
รูปแบบรหัสมอร์ส ที่ใช้การกดคลิกเส้นเสียงยาว และสั้น เหมือน 0 กับ 1
รูปแบบ รหัสโบคอต ⚫ แทนเลข 1 ส่วนที่เว้นว่างแทนเลข 0
ซึ่งรหัสโบคอตอาจเรียกว่าเป็นต้นแบบเลยก็ได้ เพราะมีความใกล้เคียงกับ CharCode ในปัจจุบันที่สุด ประกอบด้วยวิธีการเข้ารหัสด้วยเลขฐานสอง ในยุคนั้นมีรหัสแค่ 5 ตัวเท่านั้นเพื่อแทนตัวอักขระหนึ่งตัว ใช้ในการส่งโทรเลขสื่อสาร จนกระทั่งพัฒนากลายเป็นรหัส 8 ตัวที่ใส่บนระบบคอมพิวเตอร์
อย่างไรก็ตามปัจจุบัน CharCode ไม่ได้มีแค่เลข 8 ตัว อย่างเดียวเท่านั้น เพราะมนุษย์เราได้พัฒนาให้คอมพิวเตอร์จดจำรหัสได้ถึง 16 bits ไปจนถึง 32 bits เพื่อให้รองรับอักษร (Alphabet), อักขระ (Character), สัญลักษณ์ (Symbol) หรือภาษา (Language) ต่างๆ ได้มากขึ้น แต่คิดดูว่ารหัสจำนวน 8-32 ตัว คงไม่มีใครมานั่งจดจำกันได้หมด CharCode จึงมีการถูกแปลงออกมาเป็นเลขฐานสิบ (Decimal) และฐานสิบหก (Hexadecimal) รวมถึงรหัสรูปแบบ Entity Name ให้ใช้งานง่ายขึ้น
คนทั่วไปสามารถเรียกใช้อักขระพิเศษ ได้ด้วยการกดปุ่ม Alt ค้างไว้ และตามด้วยตัวเลขฐานสองและฐานสิบ เป็นทางลัดของระบบ Windows คุณสามารถลองพิมพ์ได้เอง แต่ในปัจจุบันระบบปฏิบัติการ Windows ได้เพิ่มทางเลือกที่ง่ายกว่าคือ กดปุ่ม (Window + ;) และเลือกตัวอักขระได้ตามต้องการ แต่ใครที่ไม่ชอบง่ายๆ ก็นั่งหาโค้ดลับกับรหัสเลขฐานดู
สำหรับผู้เขียน HTML นั้นจะมีวิธีการพิมพ์โค้ดที่ต่างออกไป เพื่อใช้ในการเขียน HTML ให้แปลงออกมาเป็นตัวอักขระบนเว็บเพจ โดยตัวอักขระบางตัวจะพิมพ์ด้วยหลักของเลขฐานสิบ และฐานสิบหก ส่วนอีกรูปแบบคือ Entity Name ที่กล่าวไว้ข้างต้น
ความจริงสัญลักษณ์ และ ตัวเลขต้องพิมพ์ติดกันหมด แต่ผู้เขียนต้อง เว้นวรรค สักนิดให้เห็นตัวอย่างที่ไม่แสดงผล ไม่เช่นนั้นบนหน้าบทความที่คุณอ่านตอนนี้จะกลายเป็น ดังภาพ
ภาพบนหน้าเว็บถ้ามีการเขียนโค้ดอย่างถูกต้อง
โดยรหัสเหล่านั้นมันจะยึดตามหลักของรหัสรูปแบบ ASCII และ Unicode ซึ่งบนเว็บไซต์ หรือโปรแกรมต่างๆ จะรองรับไม่เหมือนกัน
บนโลกนี้มีอักษรพิเศษ อักขระพิเศษ หรือสัญลักษณ์พิเศษ เป็นหมื่นๆ ตัวบนระบบคอมพิวเตอร์ที่เรียกรวมๆ กันว่า CharCode ซึ่งถ้าพูดหมดก็คงจะยาว แต่สามารถแบ่งออกเป็น 4 กลุ่มใหญ่ๆ ได้ ประกอบด้วย
Charset ย่อมาจาก Character Set เป็นชุดการเข้ารหัสตัวอักษรรูปแบบมาตรฐานดั้งเดิม ที่จัดเก็บตัวอักษรและอักขระในรูปแบบของรหัสทั้งหมด 256 ตัว แบ่งออกเป็น 3 รูปแบบที่นิยมใช้กันทั่วโลก คือ
ASCII (แอสกี) เป็นชุดรหัสมาตรฐานของสหรัฐอเมริกา (American Standard Code for Information Interchange) ที่มีอักษรภาษาอังกฤษ เลขอารบิก เครื่องหมายวรรคตอน และสัญลักษณ์ต่างๆ รวมเป็นจำนวน 128 รหัส (0-127) ซึ่งปรากฎอยู่บนคีย์บอร์ดของแต่ละคนอยู่แล้ว เช่น +,>,?, A-Z(พิมพ์เล็ก-พิมพ์ใหญ่), 0-9 และอื่นๆ ถูกใช้กันอย่างแพร่หลายในระบบคอมพิวเตอร์ทั่วไป
ที่บอกว่า ASCII มี 128 รหัส เพราะเป็นรหัสมาตรฐานดั้งเดิมในยุคแรกๆ เก็บรหัสไว้บนพื้นฐานของ 7bits จึงมีแค่ 128 ตัว แต่ยุคนั้นคอมพิวเตอร์เก็บอักษรได้ถึง 8bits ทำให้จัดเก็บรหัสเพิ่มได้เป็น 256 ตัว แต่รหัสที่เหลือของ ASCII จะถูกปล่อยว่างไว้ ให้ผู้ผลิตโค้ดแต่ละประเทศใส่ภาษาของตัวเอง จนกลายเป็นมาตรฐานของรหัสรูปแบบอื่นๆ ไปโดยปริยาย
รหัส 0-31 มีไว้ใช้เพื่อควบคุมโปรแกรม ดังนั้นมันจะไม่แสดงผล ส่วนรหัสที่เหลือจะแทนอักษร และสัญลักษณ์ต่างๆ ที่ใช้งานโดยทั่วไป
ISO-8859 เป็นชุดรหัสอักขระเริ่มต้นสำหรับ HTML 4 รับรองโดย The International Standards Organization (ISO) มีความครบเครื่อง มีอักขระเยอะกว่า และรองรับได้หลายภาษา รวมถึงไทยด้วย แต่แบ่งย่อยเป็นหลายรุ่นตามภาษาของแต่ละที่ เพื่อให้รหัสไม่ซ้ำกันในการจัดเก็บทั้ง 256 ตัว
ประกอบด้วย
โดยทั่วไปรหัส ISO-8859 จะรองรับพื้นฐานคำสั่งและตัวอักขระของ ASCII ใน 128 ตัวแรกเหมือนกันหมด และรหัส 129-160 จะว่างเปล่าไม่แสดงผล ส่วนรหัสที่เหลือ 161-256 จะเปลี่ยนไปตามรุ่น และภาพต่อไปนี้คือตัวอักษร และสัญลักษณ์พิเศษของ CharCode รูปแบบ ISO-8859-1
ภาพจาก https://en.wikipedia.org/wiki/ISO/IEC_8859-1
ดังภาพเมื่อเทียบกับ ASCII คุณจะเห็นความคล้ายกันของตัวอักษรในช่วงแรกๆ และส่วนที่เหลือก็คือที่เพิ่มไปตามรุ่นต่างๆ
Win-1252 หรือ ANSI คือชุดอักขระดั้งเดิมของ Windows Charset จริงๆ มันคือ รูปแบบที่เหมือนกับ ISO-8859 แตกต่างที่ Win-1252 จะมีอักษรเพิ่มเป็นของตัวเองในช่วงที่เว้นว่างไว้ของ ISO-8859 คือ เพิ่มมา 32 ตัว ตามภาพนี้ครับ พอจะเห็นชุดความต่างไหม
ภาพจาก https://en.wikipedia.org/wiki/Windows-1252
Unicode คือรหัสคอมพิวเตอร์แทนตัวอักขระที่ถูกพัฒนาโดย Unicode Consortium (สมาคม Unicode) ที่ต้องการสร้างมาตรฐานตัวอักษรขึ้นมาใหม่ เพราะ ASCII หรือ CharCode รุ่นก่อนๆ รองรับแค่ภาษาอังกฤษ และภาษาที่เพิ่มได้แค่ 256 ตัว ซึ่งปัจจุบัน Unicode มีการเก็บตัวอักขระไว้ถึง 1,112,064 ตัวจากทั่วโลก อักขระที่เห็นตอนต้นส่วนมากก็เป็น Unicode
ความแตกต่างของ Unicode ที่ไม่เหมือนชาวบ้านเขา คือปกติ CharCode จะเรียกใช้ด้วยตัวเลขฐาน ขณะที่รหัส Unicode เป็นเซ็ตรหัสที่ถูกตั้งขึ้นใหม่ (เรียกว่า Codepoint) เพื่อใช้แสดงแทนตัวอักษรเหล่านี้ ซึ่งเขียนด้วย U+ตามด้วยตัวเลขฐานสิบหก เช่น U+2580 หรือ U+259F
แต่ Code point เหล่านี้ก็ไม่ได้เกี่ยวกับการเก็บตัวอักษรบนคอมพิวเตอร์ มันจึงมีการถูก Encoding ขึ้นใหม่เพื่อให้เข้ากับโปรแกรมหลายๆ ตัวกลายเป็น UTF (Unicode Transformation Format) ความหมายตรงตัวคือ "รูปแบบการแปลง Unicode" ้ ให้เป็นมาตรฐานตัวเลขรหัสที่ระบุบนคอมพิวเตอร์
UTF จะมีอยู่ด้วยกัน 3 แบบ คือ UTF-8, UTF-16 และ UTF-32 (เลขด้านหลัง คือใช้บอกมาตรฐานจำนวนบิตของเลขฐานสอง)
ว่ากันที่ UTF-8 เป็นการเข้ารหัสอักขระ บนระบบคอมพิวเตอร์รูปแบบหนึ่งที่นิยมใช้กันมาก เพราะถูกออกแบบให้ใช้งานร่วมกับ ASCII ได้ ใช้เลขฐานสอง 8 bits (1 byte) ต่อ 1 Unit Code เป็นขั้นต่ำในการแทนตัวอักขระเหมือนกับ CharCode รูปแบบเก่า แต่ที่มันเจ๋งกว่าคือสามารถใช้ชุดรหัสตั้งแต่ 2 - 4 Unit Code (2 - 4 byte) ในการแทนตัวอักขระเกือบทั้งโลกได้ ข้อดีคือ ยืดหยุ่น และสามารถเข้ารหัสของ Unicode จำนวน 1,112,064 ได้ทุกตัว
ปัจจุบัน UTF-8 ถูกกำหนดเป็นมาตรฐานการเข้ารหัส สำหรับมาตรฐานอื่นไปแล้ว เพราะข้อดีที่รองรับอักขระ หรือตัวอักษรได้หลากหลาย รวมถึงภาษาต่างๆ จากทั่วโลก ปัจจุบันมีโปรแกรมและภาษาโปรแกรมมิ่งหลายชนิดที่รองรับและใช้รูปแบบรหัสของ UTF-8 ในการแปลงเป็นอักขระ ซึ่งคุณสามารถพบเห็น UTF-8 ได้โดยทั่วไป จาก ชื่อไฟล์ภาษาไทยที่อยู่บน Windows, โปรแกรม Notepad หรือแม้แต่ Search Engine อย่าง Google ก็ทำงานแบบ UTF-8
สำหรับ UTF-16 จะใช้เลขฐานสอง 16 bits (2 Byte) เป็นขั้นต่ำ 1 Unit Code ในการแปลงเป็นอักขระ 1 ตัว ซึ่ง UTF-16 ไม่ได้ใช้เพียงแค่เลข 16 bits เท่านั้น แต่สามารถใช้ Unit Code 2 ชุด (กลายเป็น 32 บิต) เพื่อแทนตัวอักษร 1 ตัวได้เหมือนกัน
จะเห็นว่ามันไม่เหมือนกับ UTF-8 เพราะ ขั้นต่ำการแปลงรหัสอักขระ 1 ตัว เท่ากับ 16 บิต จึงยืดหยุ่นน้อยกว่าและไม่รองรับมาตรฐานการเข้ารหัสที่มี 8 bits ทั่วไป แต่เอาจริงๆ ภาษาต่างๆ ของ UTF-16 ก็มีเยอะอยู่แล้ว รวมถึงภาษาไทยก็มีใน UTF-16
สำหรับ UTF-32 คือการเข้ารหัสขั้นต่ำ 1 ตัว เท่ากับ 32 bits พูดตามตรงก็คือยืดหยุ่นน้อยที่สุดแล้ว จึงไม่ค่อยนิยมใช้กัน
Symbols แปลตรงตัวคือ สัญลักษณ์ ที่ถูกกำหนดรหัสไว้แทนตัวเองบนระบบคอมพิวเตอร์ เช่นสัญลักษณ์ทางคณิตศาสตร์, ลูกศร หรือ สัญลักษณ์อื่นๆ ที่ไม่มีบนแป้นพิมพ์ คุณสามารถใช้ Symbols ด้วยรหัส Entity และเลขฐานสิบ รวมถึงเลขฐานสิบหก ที่พิมพ์ในตัวอย่างไว้ก่อนหน้าได้
ซึ่งจริงๆ Symbols นั้นมีอยู่ในชุดอักขระแทบจะทุกรูปแบบโดยเฉพาะใน Unicode ทั้งหมด โดยชนิดของสัญลักษณ์ต่างๆ จะมีทั้ง
Entities คือ รหัสการแปลงอักขระพิเศษใน HTML ด้วยการกำหนดชื่อ Entity Name ให้อักษรต่างๆ ก่อนหน้านี้ผมก็เกริ่นมานิดหน่อยแล้วว่ามันคือรหัสที่ ขึ้นต้นด้วย & ตามด้วยชื่อและ ; ซึ่งที่เอามาจัดในหมวดนี้เพราะ อักษรบางตัวก็ไม่มีรหัส Entity Name แต่ก็แทนค่าผลลัพธ์ได้ด้วยเลขฐานสิบ และฐานสิบหกโดยยึดหลักของรหัสรูปแบบ UTF-8 และ ASCII ตามที่กล่าวเอาไว้ข้างต้น
เรื่องของรหัส CharCode สามารถเอาไปใช้ได้หลายวัตถุประสงค์ โดยเฉพาะถ้าคุณอยากได้ตัวอักษรแปลกๆ ไปใส่ชื่อไลน์เพื่ออวดเพื่อน คุณไม่ต้องมานั่งจดจำรหัสพวกนี้ให้ปวดสมอง หรือไปหาที่ไหนเลย เพราะ Thaiware เรามีเพจที่รวบรวม CharCode ที่แตกต่างกันออกไปไม่ว่าจะเป็น Charset, UTF-8, Symbols และ Entities ให้คุณได้คัดลอก (Copy) ไปใช้งานได้ตามต้องการ รวมถึงยังมีรหัสรูปแบบฐานสิบ (Dec) และฐานสิบหก (Hex) และ Entity Name ให้เลือกครบ
สามารถเข้าไปเลือกดูได้ผ่านลิงก์เว็บไซต์ https://charcode.thaiware.com/ เลยครับ
ภาพตัวอย่างหน้าเว็บไซต์ https://charcode.thaiware.com/
|
งานเขียนคืออาหาร ปลายปากกา ก็คือปลายตะหลิว |