วิธีแก้ปัญหา php อ่านภาษาไทยไม่ออกกลายเป็นภาษาต่างด้าว

แชร์ประสบการณ์เขียนโค้ด php + Mysql เล็ก ๆ น้อย ๆ เผื่อจะเป็นประโยชน์กับใครสักคน...
 
 
วิธีแก้ปัญหา php อ่านภาษาไทยไม่ออกกลายเป็นภาษาต่างด้าว เป็นปัญหายอดฮิตของผู้ที่กำลังศึกษาการพัฒนาเว็บไซต์ด้วย PHP ร่วมกับฐานข้อมูล Mysql ผมเองก็เจอบ่อย ๆ อยู่เหมือนกัน หาวิธีแก้กันไป สมัยนี้เป็นยุคของการสื่อสารไร้พรมแดน ข้อมูล ความรู้ต่าง ๆ เปิดกว้างอย่างมาก เพราะมีอินเตอร์เนตแรง ๆ ให้ใช้กันแบบจุใจ
 
ไม่เหมือนสมัยก่อน ที่ต้องเปิดดูตามหนังสือ ในตำรา ไม่ก็ต้องถามกับครู หรือ รุ่นพี่เท่านั้น มันช่างแตกต่างกันเหมือนกับอยู่คนล่ะโลกเลยจริง ๆ ว่าแล้วก็แอบอิจฉาน้อง ๆ รุ่นใหม่ ที่มีองค์ความรู้มากมายในโลกออนไลน์ให้เลือกดู เลือกศึกษากันแบบฟรี ๆ ถ้าศึกษาเองไม่รู้เรื่อง ก็มีคอร์สให้ลงเรียน ทำให้ความรู้ และทักษะ พัฒนาไปได้อย่างรวดเร็ว
 
 
เพื่อน ๆ หลายคนคงเคยเจอหน้าจอประมาณในรูปนี้กันมาแล้วใช่ไหมครับ คงจะงงกันแน่ ๆ ว่าทำไมข้อมูลมันกลายเป็นภาษาต่างด้าวไปอย่างนี้ล่ะ ก็ในเมื่อข้อมูลในฐานข้อมูล Mysql ก็เป็นภาษาไทยปรติ ๆ เลย
 
 
มันเกิดอะไรขึ้นกันแน่ แล้วจะต้องแก้ไขปัญหานี้อย่างไรดี วันนี้ผมจะมาแนะนำตั้งแต่ในฐานข้อมูล Mysql ไฟล์เชื่อมต่อฐานข้อมูล และสุดท้าย ไฟล์ PHP ที่อาจจะทำให้เกิดปัญหานี้ เพราะทั้ง 3 ส่วนนี้ สามารถทำให้การแสดงผลข้อมูลจากภาษาไทยกลายเป็นภาษาต่างด้าวได้นั่นเอง
 
มาดูกันที่ดาต้าเบสก่อนเลยนะครับ ว่าเราสร้างไว้แบบไหน Collation ภาษาที่กำหนดให้แต่ล่ะฟิว์ดตั้งค่าไว้แบบไหน ตามรูปด้านล่างนี้นะครับ
 
 
จากในรูปตัวอย่าง ตั้งค่า Collation ภาษาไว้เป็น utf8_general_ci ซึ่งเป็นที่นิยมใช้กันทั่วโลก แต่ถ้าของใครไม่ได้ไว้แบบนี้ ก็เปลี่ยนมาใช้แบบนี้ซะนะครับ จะได้ไม่มีปัญหาเวลาเอาโค้ดไปใช้ที่อื่น หรืออัพขึ้นโฮสใช้งานจริง
 
ส่วนต่อที่มันจะทำให้เกิดปัญกาคือ การตั้งค่าภาษา อักขระของไฟล์ PHP ที่เราสร้างขึ้นมา ส่วนจะเป็นอย่างไรนั้น มาดูในรูปกันเลยดีกว่าครับ
 
 
จากรูปจะเห็นได้ว่า charset คือ tis-620 ซึ่งในฐานข้อมูลตั้งค่าเป็นแบบ utf8 และนี่ก็คือสาเหตุที่ทำให้การแสดงผลผิดเพี้ยนไป ภาษาไทย กลายเป็นภาษาต่างด้าวไปอย่างที่เห็น ส่วนวิธีแก้ไขก็ง่าย ๆ ครับ แค่เปลี่ยนจาก tis-620 เป็น utf-8 เสร็จแล้วทำการบันทึกไฟล์ แล้วรันเทสอีกทีนึง
 
 
เพียงเท่านี้ก็สามารถแสดงผลภาษาไทยได้อย่างถูกต้องแล้วนะครับ ใครที่เจอปัญหานี้อยู่ก็ลองทำตามที่ผมแนะนำดูนะครับ รับรองว่าได้แน่นอน อย่าลืมนะครับว่า การตั้งค่าภาษาให้กับไฟล์ ให้กับฟิว์ด มีความสำคัญมาก ๆ เพราะเมื่อเราอัพเว็บขึ้น Host จริง ๆ แล้ว ก็ไม่แน่ว่าผู้ใช้จะมาจากประเทศไหนบ้าง การตั้งค่าภาษาให้เป็นมาตรฐาน รองรับได้ทุกอุปกรณ์ย่อมดีกว่า
 
ยังมีอีกวิธีนึงนะครับ เกือบลืมบอกไป อันนี้จะเป็นการแก้ปัญหากรณีที่จำเป็นต้องใช้ฐานข้อมูลที่มีรูปแบบภาษาแตกต่างออกไป เช่น ในฐานข้อมูลเป็น tis620 (อาจจะสร้างมานานมากแล้ว และมีข้อมูลเยอะมาก ๆ ทำให้การเปลี่ยนแปลงเป็นไปได้ลำบาก หรือหากเปลี่ยนมาเป็น utf8 จะทำให้ข้อมูลเสียหาย) แต่อยากแสดงผลด้วยไฟล์ PHP ที่เป็นแบบ UTF8 ก็สามารถทำได้เช่นกัน โดยเพิ่มโค้ดเพียงแค่บรรทัดเดียวเท่านั้น
 
mysqli_query($conn,"set character set utf8");
 
คำสั่งนี้จะแปลงภาษาจากฐานข้อมูล ให้เป็นรูปแบบ UTF8 ที่สามารถแสดงผลได้ถูกต้อง ไม่เป็นภาษาต่างด้าว เขียนไว้ด้านล่างโค้ดเชื่อมต่อฐานข้อมูลนะครับ
<?php
 
                $servername = "127.0.0.1";
                $sys_user ="root";
                $sys_password = "123456789";
                $database_name = "codefather2016";
                $conn = mysqli_connect($servername,$sys_user,$sys_password,$database_name) or die(mysql_error());
                mysqli_query($conn,"set character set utf8");
?>
 
 
เพียงเท่านี้ ปัญหาการแสดงผลจากฐานข้อมูลเป็นภาษาต่างด้าว ก็จะหมดไป หวังว่าบทความนี้จะเป็นประโยชน์กับเพื่อน ๆ นะครับ
ขอบคุณที่แวะเข้ามาเยี่ยมชมเว็บของเรา... www.code-father.com
 


My Article
แนะนำเว็บสูตรหวยออนไลน์ ดูฟรี