บันทึก Emoji ด้วย MySQL ได้ทั้งใน iOS และ Android
บันทึก Emoji ด้วย MySQL ได้ทั้งใน iOS และ Android
สังเกตุไหมครับว่า keyboard บนมือถือทั้ง iOS และ Android จะมีปุ่ม emoji ที่เราสามารถใส่ไอคอนเวลาพิมพ์ข้อความได้สำหรับ Web Developer ที่ต้องทำเว็บไซต์ให้รองรับการแสดงผลบนอุปกรณ์สมาร์ทโฟนแล้ว อีกอย่างหนึ่งที่มักจะเป็นปัญหาคือ ลูกเล่นต่าง ๆ ที่ติดมากับคีย์บอร์ดของมือถือ เช่น ระบบ emoji หรือ emoticon ที่มีทั้งบน iOS และ Android สำหรับเว็บไซต์ที่มีฟังก์ชั่นรับ input ผ่าน keyboard เช่นการตั้งกระทู้หรือการ comment จะต้องทำเว็บไซต์ให้สามารถบันทึกไอคอนเหล่านี้ลงในฐานข้อมูลได้ด้วย
ปัญหาที่เจอคือเมื่อเราใส่ emoji เข้าไปใน input หรือ textarea และส่งค่าไปบันทึกในฐานข้อมูล ตัวฐานข้อมูลจะไม่สามารถบันทึกได้คือจะแสดงเป็นข้อมูลว่าง ๆ
ซึ่งโดยปกติเราก็จะสร้างตารางฐานข้อมูลโดยกำหนด Character set เป็น UTF8 และ callation เป็น UTF8_general_ci หรือ UTF8_unicode_ci เพื่อให้รองรับภาษาไทย แต่ถ้าจำเป็นต้องบันทึกข้อมูลที่มีอักขระอยู่ในรูปแบบ emoji เราจะเป็นจะต้องปรับจาก utf8 ธรรมดาเป็น utf8mb4 เพื่อให้รองรับอักขระพิเศษหลากหลายภาษา ลองมาตั้งค่าฐานข้อมูลให้รองรับการบันทึกข้อมูล emoji กันครับ
วิธีตั้งค่า MySQL ให้รองรับ Emoji
- 1. ใช้คำสั่ง MySQL ตั้งค่า CHAR SET และ CALLATION ของฐานข้อมูลให้เป็นแบบ utf8mb4 ดังนี้
ALTER DATABASE `database_name` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
- 2. ใช้คำสั่ง MySQL ตั้งค่า CHAR SET และ CALLATION ของตารางฐานข้อมูลให้เป็นแบบ utf8mb4 ดังนี้
ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
- 3. ใช้คำสั่ง MySQL ตั้งค่า CHAR SET และ CALLATION ของ column ในฐานข้อมูลให้เป็นแบบ utf8mb4 ดังนี้
ALTER TABLE `table_name` MODIFY `column_name` VARCHAR( 200 ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
- 4. เมื่อมีการ connect กับฐานข้อมูลให้ใช้คำสั่ง ดังนี้
mysql_query("SET NAMES utf8mb4");
สำหรับ codeigniter framework ให้ไปตั้งค่าที่ config.php ดังนี้
'char_set' => 'utf8mb4', 'dbcollat' => 'utf8mb4_general_ci',
สุดท้ายอย่าลืมตั้งค่าในส่วนของ meta tag charset ให้เป็นแบบ utf8
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
เพียงเท่านี้เราก็จะสามารถใช้งานภาษาไทยและ emoji บนคีย์บอร์ดของทั้ง iOS และ Android ได้แล้วครับ