ปัญหา ภาษาไทย กับ mysql (แสดงผลเป็น ????)
เป็นปัญหากวนใจผมมานานแล้วก็หวังว่าเพื่อนๆหลายคงคงจะเคยเจอ
ปัญหาที่ว่านี้คือเมื่อเราทำการ insert data เก็บลงฐานข้อมูล ผ่านคำสั่ง mysql_query
ภาษาไทยจะกลายเป็นเครื่องหมาย ????
ในตอนแรกนั้นผมนึกว่าจะมีปัญหาเกี่ยวกับ charset= tis-620
แต่ลองแล้วก็แก้ปัญหานี้ไม่ได้เลย หนทางหนึ่งที่ผมลองแล้วได้ผลคือ
ก่อนทำการใช้ คำสั่ง mysql_query() ให้ทำการเพิ่ม คำสั่ง
mysql_query("SET NAMES TIS620"); ไว้ก่อนหน้า
จะช่วยแก้ปัญหาได้ หากเพื่อนมีวิธีอื่นที่ดีกว่านี้ก็แนะนำมาได้นะครับ
สำหรับการแก้แบบอื่นผมไปเจอมา
http://www.phpconcept.com/index.php?option...task=view&id=21
เว็บนี้ละเอียดมาก
Re: ปัญหา ภาษาไทย กับ mysql (แสดงผลเป็น ????)
เสริมนิดนึงครับถ้าหากเจออาการ ??? ให้ลองเช็คที่ ไฟล์ต้นฉบับของ database ที่ใช้ dump ดูว่าเห็นตัวอักษรเป็นแบบไหนแล้วก็ charset ของแต่ละ table เป็นอย่างไร
เช่น
1. ถ้าเห็นตัวหนังสือของข้อความภาษาไทยแสดงเป็น
xe0xb8xb2 (escape sequence) ก็แสดงว่าถูกต้องถ้าแสดงเป็นอย่างอื่นอาจจะทำให้การ dump ผิดพลาด
2. ให้ดู syntax ของการสร้างตารางที่ด้านท้ายว่าเป็นแบบนี้หรือไม่
ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=24 ;
ถ้าใช้ให้ลองแก้เป็น
ENGINE=MyISAM DEFAULT AUTO_INCREMENT=24 ;
ดูว่าใช้ได้ไหม (dump ผ่านหรือเปล่า+ ภาษาไทยอ่านได้)
ถ้าไม่ได้ให้แก้เป็น
ENGINE=MyISAM ;
ซึ่งถ้าเป็นแบบหลังนี้จากประสบการณ์ mysql จะ detect charset ของ table ให้เองแล้วก็แสดงผลได้ถูกต้อง