Site icon บริษัท โค๊ดบี จำกัด

บันทึก Emoji ด้วย MySQL ได้ทั้งใน iOS และ Android

<h2>บันทึก Emoji ด้วย MySQL ได้ทั้งใน iOS และ Android<&sol;h2>&NewLine;<p><&sol;br><br &sol;>&NewLine;<strong>บันทึก Emoji ด้วย MySQL ได้ทั้งใน iOS และ Android<&sol;strong><&sol;p>&NewLine;<p>สังเกตุไหมครับว่า keyboard บนมือถือทั้ง iOS และ Android จะมีปุ่ม emoji ที่เราสามารถใส่ไอคอนเวลาพิมพ์ข้อความได้สำหรับ Web Developer ที่ต้องทำเว็บไซต์ให้รองรับการแสดงผลบนอุปกรณ์สมาร์ทโฟนแล้ว อีกอย่างหนึ่งที่มักจะเป็นปัญหาคือ ลูกเล่นต่าง ๆ ที่ติดมากับคีย์บอร์ดของมือถือ เช่น ระบบ emoji หรือ emoticon ที่มีทั้งบน iOS และ Android สำหรับเว็บไซต์ที่มีฟังก์ชั่นรับ input ผ่าน keyboard เช่นการตั้งกระทู้หรือการ comment จะต้องทำเว็บไซต์ให้สามารถบันทึกไอคอนเหล่านี้ลงในฐานข้อมูลได้ด้วย<&excl;--more--><br &sol;>&NewLine;<&sol;br><br &sol;>&NewLine;ปัญหาที่เจอคือเมื่อเราใส่ emoji เข้าไปใน input หรือ textarea และส่งค่าไปบันทึกในฐานข้อมูล ตัวฐานข้อมูลจะไม่สามารถบันทึกได้คือจะแสดงเป็นข้อมูลว่าง ๆ <&sol;p>&NewLine;<p><&sol;br><br &sol;>&NewLine;ซึ่งโดยปกติเราก็จะสร้างตารางฐานข้อมูลโดยกำหนด Character set เป็น UTF8 และ callation เป็น UTF8&lowbar;general&lowbar;ci หรือ UTF8&lowbar;unicode&lowbar;ci เพื่อให้รองรับภาษาไทย แต่ถ้าจำเป็นต้องบันทึกข้อมูลที่มีอักขระอยู่ในรูปแบบ emoji เราจะเป็นจะต้องปรับจาก utf8 ธรรมดาเป็น utf8mb4 เพื่อให้รองรับอักขระพิเศษหลากหลายภาษา ลองมาตั้งค่าฐานข้อมูลให้รองรับการบันทึกข้อมูล emoji กันครับ<br &sol;>&NewLine;<&sol;br><&sol;p>&NewLine;<h4>วิธีตั้งค่า MySQL ให้รองรับ Emoji<&sol;h4>&NewLine;<ul>&NewLine;<li>1&period; ใช้คำสั่ง MySQL ตั้งค่า CHAR SET และ CALLATION ของฐานข้อมูลให้เป็นแบบ utf8mb4 ดังนี้&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " >ALTER DATABASE &grave;database&lowbar;name&grave; DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4&lowbar;general&lowbar;ci<&sol;pre>&NewLine;<&sol;li>&NewLine;<li>2&period; ใช้คำสั่ง MySQL ตั้งค่า CHAR SET และ CALLATION ของตารางฐานข้อมูลให้เป็นแบบ utf8mb4 ดังนี้&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " >ALTER TABLE &grave;table&lowbar;name&grave; CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4&lowbar;general&lowbar;ci<&sol;pre>&NewLine;<&sol;li>&NewLine;<li>3&period; ใช้คำสั่ง MySQL ตั้งค่า CHAR SET และ CALLATION ของ column ในฐานข้อมูลให้เป็นแบบ utf8mb4 ดังนี้&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " >ALTER TABLE &grave;table&lowbar;name&grave; MODIFY &grave;column&lowbar;name&grave; VARCHAR&lpar; 200 &rpar; CHARACTER SET utf8mb4 COLLATE utf8mb4&lowbar;general&lowbar;ci<&sol;pre>&NewLine;<&sol;li>&NewLine;<li>4&period; เมื่อมีการ connect กับฐานข้อมูลให้ใช้คำสั่ง ดังนี้&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " >mysql&lowbar;query&lpar;"SET NAMES utf8mb4"&rpar;&semi;<&sol;pre>&NewLine;<&sol;li>&NewLine;<&sol;ul>&NewLine;<p>สำหรับ <strong>codeigniter framework<&sol;strong> ให้ไปตั้งค่าที่ config&period;php ดังนี้<&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " title&equals;"config&period;php" >'char&lowbar;set' &equals;&gt&semi; 'utf8mb4'&comma; &NewLine;'dbcollat' &equals;&gt&semi; 'utf8mb4&lowbar;general&lowbar;ci'&comma;<&sol;pre>&NewLine;<p>สุดท้ายอย่าลืมตั้งค่าในส่วนของ meta tag charset ให้เป็นแบบ utf8 <&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " >&lt&semi;meta http-equiv&equals;Content-Type content&equals;"text&sol;html&semi; charset&equals;utf-8"&gt&semi;<&sol;pre>&NewLine;<p>เพียงเท่านี้เราก็จะสามารถใช้งานภาษาไทยและ emoji บนคีย์บอร์ดของทั้ง iOS และ Android ได้แล้วครับ<br &sol;>&NewLine;<&sol;br><&sol;p>&NewLine;

Exit mobile version