ค่ามาตรฐาน Charset ของ MySQL ที่กำหนดมาให้หากเราไม่ตั้งค่าอะไรจะมีค่าเป็น latin1 ครับ ซึ่งเป็นเหตุผลที่ทำให้เวลาเราทำเว็บไซต์ทำไม output ที่ออกมาจากฐานข้อมูลบางค่ากลายเป็นภาษาต่างดาว ภาษาอักขระที่อ่านไม่ออก
เราสามารถแก้ไขได้โดย เพิ่มการตั้งค่าดังต่อไปนี้ลงในไฟล์ /etc/my.cnf
nano -w /etc/my.cnf
การตั้งค่าที่เพิ่มเข้าไป
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
สามารถเปลี่ยน utf8 เป็น tis620 หรือ cahrset อื่นๆ ได้ตามต้องการครับ เสร็จเรียบร้อยแล้วให้ restart MySQL
service mysqld restart
ข้อควรจำ :
- การตั้งค่านี้ควรปรับแต่งให้เรียบร้อยก่อนสร้างฐานข้อมูลใดๆ บน Server เพื่อที่จะได้ไม่ต้องมา convert ฐานข้อมูลที่สร้างเป็น latin1 ไปแล้วทีหลัง
- เมื่อดำเนินการด้านบนแล้ว ฐานข้อมูลที่เคยสร้างเป็น latin1 อาจมีปัญหาเรื่อง charset ได้ครับ