utf8_bin VS utf8_unicode_ci อะไรจะเจ๋งกว่ากัน
ก่อนหน้านี้ที่ผมสร้างฐานข้อมูล ผมจะใช้ collation เป็น utf8_unicode_ci เสมอ เพื่อป้องกันปัญหาภาษาไทยในmysqlเพี้ยน
แต่ปัญหาอยู่ที่ว่า ค่าเริ่มต้นของการสร้างฐานข้อมูลในโฮสต์จริง ส่วนใหญ่มันเป็น latin_swedish_ci ซึ่งก่อนที่ผมจะลงระบบได้
ผมต้องเข้าไปแก้ตรงนี้ก่อนให้เป็น utf8_unicode_ci เพื่อไม่ให้ภาษาไทยมันเพี้ยน ทำให้เสียเวลาเป็นอย่างยิ่ง แต่ก็ทนใช้แบบนี้เรื่อยมา จนถึง ณ วันนี้เลยลองใช้ utf8_bin ดู ปรากฏว่า เวิร์ค มาก ผมไม่ต้องเข้าไปเปลี่ยนตัว collation อีกต่อไป ไม่ว่าจะเป็น collation ใด เว็บผมก็แสดงภาษาไทยได้ถูกต้อง แม่นยำ ไม่มีเพี้ยนแต่ประการใด แต่ก็อดสงสัยไม่ได้ว่าเหตุใดข้อมูลมันถึงไม่เพี้ยน เลยลองเข้าไปดูในตารางที่เก็บข้อมูลก็ปรากฏว่า ข้อมูลทั้งหมดถูกแปลงให้เป็นเลขฐาน 16 หมดเลย…มิน่า ข้อมูลถึงยังแสดงผลถูกต้องได้ เพราะว่ามันแปลงกลับไปกลับมานี่เอง
ข้อเสียก็คือ ข้อมูลมันถูกแปลงอยู่ เวลากดเข้าไปดู ก็ไม่รู้เรื่อง แต่ก็ปลอดภัยไปอีกแบบ ที่จริงมันมีวิธีการ export ออกเป็นอักขระปกติได้ ไว้โอกาสหน้าจะมาเขียนวิธีการบอก