รหัสตัวอักษร : ยูนิโค้ด (Unicode)
ความหมาย
ยูนิโคด (Unicode) คือ Universal Character Set (UCS) การกำหนดหมายเลขเฉพาะสำหรับทุกอักขระ โดยไม่ขึ้นกับแพล็ตฟอร์ม ไม่ขึ้นโปรแกรม และคลุมทุกภาษา
หรือ
ยูนิโคด (Unicode) คือ มาตรฐานอุตสาหกรรมที่ช่วยให้คอมพิวเตอร์แสดงผล และจัดการข้อความธรรมดา ที่ใช้ในระบบการเขียนของภาษาส่วนใหญ่ในโลกได้อย่างสอดคล้องกัน ยูนิโคดประกอบด้วยรายการอักขระที่แสดงผลได้มากกว่า 100,000 ตัว พัฒนาต่อยอดมาจากมาตรฐานชุดอักขระสากล (Universal Character Set: UCS) และมีการตีพิมพ์ลงในหนังสือ The Unicode Standard เป็นแผนผังรหัส เพื่อใช้เป็นรายการอ้างอิง โดยมี ยูนิโคดคอนซอร์เทียม (Unicode Consortium) เป็นองค์กรไม่แสวงหาผลกำไร เป็นผู้รับผิดชอบในการพัฒนายูนิโคด
รุ่นของ Unicode
Unicode รุ่น 1.0.0
ออกปี 2534 รองรับ 24 Character set ครอบคลุม 7,161 รูปแบบ
Unicode รุ่น 6.3.0
ออกปี 2556 รองรับ 93 Character set คลุม 110,187 รูปแบบ

ปัจจุบันนิยมใช้ Unicode 2 แบบ คือ UTF-8 และ UTF-16
[UTF-8] นิยมใช้ใน Linux
[UTF-16] นิยมใช้ใน Windows2000 เป็นต้นไป
อ้างอิง : มาตรฐานภาษาไทย ใน thaicert.or.th
UTF8
คือ ชุดอักขระ (Unicode Transformation Format) หรือ การกำหนดหมายเลขเฉพาะสำหรับทุกอักขระ โดยไม่ขึ้นกับแพล็ตฟอร์ม ไม่ขึ้นโปรแกรม และคลุมทุกภาษา นิยมใช้ใน Linux ซึ่ง UTF8 เป็นชุดอักขระที่เป็นที่รู้จักมากที่สุด ใช้ 1 ไบต์สำหรับอักขระทุกตัวในรหัสแอสกี และมีค่ารหัสเหมือนกับมาตรฐานแอสกี หรือมากกว่านั้นจนถึง 4 ไบต์สำหรับอักขระแบบอื่น
UTF16
คือ ชุดอักขระ (Unicode Transformation Format) หรือ การกำหนดหมายเลขเฉพาะสำหรับทุกอักขระ โดยไม่ขึ้นกับแพล็ตฟอร์ม ไม่ขึ้นโปรแกรม และคลุมทุกภาษา นิยมใช้ใน Windows ซึ่ง UTF16 เป็นส่วนขยายจาก UCS-2 โดยใช้ 4 ไบต์สำหรับแทนรหัสอักขระที่ขาดไปของ UCS-2

ASCII
(American Standard Code for Information Interchange)

คือ รหัสที่อเมริกากำหนดขึ้นมา เพื่อใช้ในการแลกเปลี่ยนข้อมูล ชุดอักขระแอสกี (ASCII character set) ใช้ในการอ้างอิงว่ารหัสนี้แทนตัวอักษรอะไร ASCII มีมาตรฐานต่างกันไปตามซอฟต์แวร์ แต่ใช้ 7 bit แรกเป็นรหัสอักษรภาษาอังกฤษเหมือนกัน ที่เหลือขึ้นกับแต่ละมาตรฐาน เช่น ตัว A ในภาษาอังกฤษ ถูกแทนด้วย 65 ในฐาน 10 หรือ 41 ในฐาน 16 ซึ่งชุดตัวอักษรของ ASCII แบบ 8 bit ใช้ 1 byte ต่อ 1 character จึงเก็บอักขระได้ 256 แบบ ในยุคแรกภาษาไทยใช้ bit ที่ 8 ต่างกันไป เช่น รหัสเกษตรฯ รหัส สมอ. หรือรหัส MacThai อ่านเพิ่มเติมที่ มาตรฐานภาษาไทย
ANSI
(American National Standards Institute)

คือ สถาบันที่กำหนดมาตรฐาน ได้กำหนดมาตรฐานของตัวอักษร ในชื่อ ANSI character set ซึ่งกำหนดมาตรฐานไว้ 217 ตัวอักษร The ANSI set of 217 characters, also known as Windows-1252, was the standard for the core fonts supplied with US versions of Microsoft Windows up to and including Windows 95 and Windows NT 4. อ่านเพิ่มเติมที่ มาตรฐานแอนซี่
การจัดเก็บข้อมูลในแฟ้มแบบ UTF-16 หรือ Unicode
เมื่อทดสอบใช้ Notepad บน Windows
บันทึกแฟ้มเป็นแบบ Encoding=Unicode
มี "ก" 4 ไบท์ เก็บ FF FE 01 0E
มี "ข" 4 ไบท์ เก็บ FF FE 02 0E
มี "ค" 4 ไบท์ เก็บ FF FE 04 0E
มี "1" 4 ไบท์ เก็บ FF FE 31 0E
มี "กข" 6 ไบท์ เก็บ FF FE 01 0E 02 0E
มี "a" 4 ไบท์ เก็บ FF FE 61 00
มี "abก" 8 ไบท์ เก็บ FF FE 61 00 62 00 01 0E
มี "ก0ข1" 10 ไบท์ เก็บ FF FE 01 0E 30 00 02 0E 31 00
โดย FF FE คือ BOM (Byte order mark)
ถูกใช้ที่ต้นแฟ้ม เพื่อระบุให้ทราบว่า แฟ้มนี้เป็น Unicode
และเรียงแบบไบท์ต่ำมาก่อน (Little Endian = LE)
ดังนั้น ข้อมูล 0E 01 ฐาน 16 = 3585 ฐาน 10
จึงเขียน 01 0E แทนที่จะเขียน 0E 01
การจัดเก็บข้อมูลในแฟ้มแบบ UTF-8
เมื่อพิจารณาดูความแตกต่างของขนาดแฟ้ม
พบว่า ประเภท UTF-8
จะมีขนาดแฟ้มแปรผัน ตามลักษณะของข้อมูล
โดยตัวเลขใช้ 1 ไบท์ แต่ตัวอักษรใช้ 3 ไบท์ บางตัวถึง 4 ไบท์
เช่น "ก0ข1คa" จะมีขนาด 15 bytes
เพราะ กขค ใช้พื้นที่ 9 ไบท์ และ 01a ใช้พื้นที่ 3 ไบท์
รวม header 3 ไบท์ ก็จะเป็น 15 ไบท์
คือ EF BB BF -
E0 B8 81 - 30 -
E0 B8 82 - 31 -
E0 B8 84 - 61

แต่ HTML entity code บน Webpage
หากเป็น ก จะใช้ ก ตาม UTF-16 แบบ Decimal
หรือ ก จะใช้ ก ตาม UTF-16 แบบ Hex
การเข้ารหัส ก ในแบบต่าง ๆ ดูที่ fileformat.info
ความหมายของ UTF-8 และ UTF-16
UTF-8
เป็นมาตรฐานชุดอักขระหนึ่ง หากกำหนดประเภทแฟ้มเป็น UTF-8 แล้ว save แฟ้มข้อมูล "กขค" จะใช้พื้นที่ขนาด 12 ไบท์ พบว่า โดยใช้พื้นที่เก็บข้อมูลตัวอักษรละ 3 ไบท์ และส่วน header ใช้อีก 3 ไบท์
กอไก่ คือ E0 B8 81 ฐาน 16
ขอไข่ คือ E0 B8 82 ฐาน 16
คอควาย คือ E0 B8 84 ฐาน 16

โดย 3 ไบท์ แรกของแฟ้ม คือ EF BB BF ฐาน 16
แต่ตัวเลข หรืออักษรภาษาอังกฤษ
ในแฟ้มประเภท UTF-8
จะใช้ค่าตามตาราง ASCII คือ 1 ไบท์
แต่อักษร 3 ไบท์แรก ก็ยังมีอยู่เหมือนเดิม
เมื่อสร้างแฟ้มที่มี "01a" ก็จะได้แฟ้มขนาด 6 ไบท์
แต่ข้อมูล "ก0a" ก็จะได้แฟ้มขนาด 8 ไบท์
ซึ่งมาตรฐาน UTF-8 กำหนดว่า ภาษาไทย ใช้ 3 ไบท์
อยู่ระหว่าง 0xE0 0xB8 0x80 ถึง 0xE0 0xB9 0xBF

แต่ถ้าเป็นมาตรฐาน Unicode หรือ UTF-16
อยู่ระหว่าง U+0E00 ถึง U+0E7F (128 ตัว)
หรือ Decimal ระหว่าง 3584 ถึง 3711
+ http://www.utf8-chartable.de
+ http://michal.kosmulski.org/computing/
UTF-16
เป็นมาตรฐานชุดอักขระหนึ่ง หากกำหนดประเภทแฟ้มเป็น unicode หรือ UTF-16 แล้ว save แฟ้มข้อมูล "กขค" จะใช้พื้นที่ขนาด 8 ไบท์ พบว่า โดยใช้พื้นที่เก็บข้อมูลตัวอักษรละ 2 ไบท์ และส่วน header ใช้อีก 2 ไบท์
กอไก่ คือ 01 0E ฐาน 16
ขอไข่ คือ 02 0E ฐาน 16
คอควาย คือ 04 0E ฐาน 16

โดย 2 ไบท์ แรก คือ FF FE ฐาน 16 รวมกันเป็น FF - FE - 01 - 0E - 02 - 0E - 04 - 0E แต่ถ้าเป็นตัวเลข "012" ก็จะมีขนาดเท่ากับ "กขค" ที่ใช้พื้นที่ 8 ไบท์ คือ FF - FE - 30 - 00 - 31 - 00 - 32 - 00 ถ้าเป็นอักขระ "abc" ใช้พื้นที่ 8 ไบท์ โดย 2 ไบท์ แรกเหมือนเดิม แต่ข้อมูลคือ 61 00 62 00 63 00 รวมกันเป็น FF - FE - 61 - 00 - 62 - 00 - 63 - 00 ซึ่ง unicode จะมีขนาดแฟ้มเป็น 2 เท่าของจำนวนตัวอักษร รวม headder เมื่อรวมกับ header อีก 2 ไบท์ ก็จะรู้ว่าแฟ้มนี้มีกี่ตัวอักษร เช่น "ก0ข1ค2" จะมีขนาด 14 ไบท์
+ http://unicode-table.com/

พบปัญหาแล้วนำไปเล่าใน Blog
เรื่อง "การส่งภาษาไทย และจีนไปกับอีเมล"

ระบบของ Gmail รับภาษาได้ทีละภาษา เพราะไม่ได้แปลงอักขระเป็น html entities ถ้าส่งจีนหมด ก็อ่านจีนได้ แต่ถ้าผสมกันไป ภาษาจีนจะหาย ต้องแปลงก่อน พบ function สำหรับแปลงใน stackoverflow.com และอาจต้อง อัพเกรด php เพื่อใช้ฟังก์ชันแปลงอักขระ
การใช้โปรแกรม Notepad สร้างแฟ้ม ANSI, UTF8, Unicode
แฟ้มตัวอย่าง (มี 1,632 ตัวอักษร)
1. num1024_ansi_1632.txt : 1632 bytes
2. num1024_utf8_1665.txt : 1665 bytes
3. num1024_unicode_3266.txt : 3266 bytes

Notepad is a simple text editor for Microsoft Windows and a basic text-editing program which enables computer users to create documents. It was first released as a mouse-based MS-DOS program in 1983, and has been included in all versions of Microsoft Windows since Windows 1.0 in 1985.
- Notepad have 1024 col per line for word wrap in format.
1. word wrap
2. status
3. save as encoding
- Word wrap = off will auto split to next line.
- Meaning : https://en.wikipedia.org/wiki/Microsoft_Notepad
- Practice : view source code of google.com and use develper tool in chrome browser
UTF-8 ต่างจาก UTF-16 อย่างไร
พบว่า ทั้ง 2 ชุดอักขระ ต่างก็เป็นมาตรฐานชุดอักขระ ที่ใช้กำหนดตัวอักษรใน Unicode แต่มีหลักการจัดเก็บต่างกันทั้งขนาดส่วนหัว (Header) และขนาดแต่ละตัวอักษร (Character) ฃึ่ง UTF-8 เป็นมาตรฐานสำหรับ Linux และมีส่วนหัว 3 ไบท์ แต่ UTF-16 เป็นมาตรฐานสำหรับ Windows รุ่นใหม่ และมีส่วนหัว 2 ไบท์
ถ้าจัดเก็บตัวเลข และอักษรภาษาอังกฤษเป็นส่วนใหญ่ พบว่าแฟ้มแบบ UTF-8 จะมีขนาดเล็กกว่า เพราะใช้ 1 ไบท์ต่อหนึ่งอักขระเท่านั้น ส่วนใช้ตัวอักษรภาษาไทยเป็นส่วนใหญ่ พบว่าแฟ้ม UTF-16 จะใช้พื้นที่เก็บข้อมูลน้อยกว่า เพราะใช้อักขระละ 2 ไบท์ แต่ UTF-8 จะใช้เก็บอักษรภาษาไทยอักขระละ 3 ไบท์
ในแต่ละแอพพลิเคชั่น สามารถเลือกแบบตัวอักษรที่ต้องการจัดเก็บได้
และมีส่วนของ header ที่ระบุว่าเป็นชุดอักขระแบบใด
Blog : เปรียบเทียบเนื้อข้อมูลของ UTF-8 และ UTF-16

urldecode() ของ php

Unicode/0E00-0E7F
ฝึกปฏิบัติ 1. แปลงอักษรเป็น code
- ให้น.ศ.พิมพ์ชื่อตนด้วย notepad แล้ว save เป็น ANSI หรือ Unicode (UTF-16) หรือ UTF-8
- แล้วค้นจากเน็ตมาตอบ ว่าถ้ามองในแฟ้มด้วย Debug ใน DOSBOX จะเห็นอะไร
- แล้วถ้าคำนวณเอง โดยเข้าใจหลักการแล้ว จะเห็นอะไร

2. แปลงอักษรเป็นแบบ HTML entities ใน .htm
- เขียนเว็บเพจมีชื่อตนเองเป็น HTML entities แบบ Decimal
เช่น ก ข ฃ คือ ก ข ฃ
จะใช้ ¡ ไม่ได้นะครับ
ใช้บริการ Convert character ได้
http://goo.gl/72BPC