เพื่อป้องกันปัญหากรณีการแสดงผลภาษาไทยในหน้าเว็บหรือหน้าเพจของเรา
ผิดเพี้ยนไป พยายามก่อนเริ่มโปรเจ็คหรืองานของเราให้กำหนดส่วนจัดการต่างๆ
เป็น utf8 หรือ หากเป็นโค้ดเดิม ไม่ใช่ utf8 ให้ปรับให้เป็นตามที่จะแนะนำ
ปล. กรณีเป็นแก้ไขจากไฟล์เดิม แนะนำให้ทำการแบ็คอัพไฟล์เดิมหรือฐานข้อมูล
เดิมไว้ก่อน เพื่อป้องกันกรณีข้อมูลสูญหาย แต่สำหรับเริ่มโปรเจ็คใหม่สามาระปรับตามได้เลย
ส่วนของ ฐานข้อมูล สามารถกำหนดได้ตามรูป
โดยกำหนด COLLATE เป็น utf8_general_ci
หรือถ้าเป็นค่าอื่นอยู่ ก็สามารถเข้าไปแก้ไขเป็น Collation เป็น utf8_general_ci

ตัวอย่างคำสั่ง sql สร้างฐานข้อมูล
1 2 3 | CREATE DATABASE IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; |
ส่วนของการ สร้างตาราง ในฐานข้อมูล สามารถกำหนดได้ตามรูป
โดยกำหนด Collation ป็น utf8_general_ci

ตัวอย่างคำสั่ง sql สร้างตาราง
1 2 3 4 5 6 7 8 9 10 11 12 | -- -- Table structure for table `mytable` -- CREATE TABLE IF NOT EXISTS `mytable` ( `id` int (11) NOT NULL , `data` varchar (255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ALTER TABLE `mytable` ADD PRIMARY KEY (`id`); ALTER TABLE `mytable` MODIFY `id` int (11) NOT NULL AUTO_INCREMENT; |
ส่วนของการสร้างไฟล์ php หรือ html หรือไฟล์แสดงผลอื่นๆ
ให้ทำการบันทึกไฟล์นั้นโดยกำหนด encoding เป็น Unicode (UTF-8)
โดยขึ้นกับว่าใช้โปรแกรมอะไรในการเขียยโค้ด ตัวอย่างการ encoding
file ใน dreamweaver

ส่วนของการกำหนด meta tag charset ในไฟล์ เป็น utf-8
ในไฟล์ทีแสดงผล ให้เรากำหนด meta tag charset เป็น utf-8 ตามรูป

ตัวอย่างการกำหนด meta tag charset เป็น utf-8
1 2 3 4 5 6 7 8 9 10 | <!doctype html> <html> <head> <meta charset= "utf-8" > <title>Untitled Document</title> </head> <body> </body> </html> |
กรณีกำหนดในไฟล์ที่ไม่ได้มีโครงสร้าง html แบบเต็ม หรือไฟล์ที่เป็น ajax ไฟล์ที่เป็น
json ไฟล์ หรือ xml ไฟล์ หรือไฟล์ที่เกิดจากการสร้างด้วย php เราสามารถกำหนด header
ของไฟล์ ดังนี้ โดยกำหนดไว้ด้านบนสุดของไฟล์
แสดงผลเป็น HTML
1 2 3 4 5 6 | <?php header( "Content-type:text/html; charset=UTF-8" ); header( "Cache-Control: no-store, no-cache, must-revalidate" ); header( "Cache-Control: post-check=0, pre-check=0" , false); require_once ( "db_connect.php" ); ?> |
แสดงเป็น json string
1 2 3 4 5 6 | <?php header( "Content-type:application/json; charset=UTF-8" ); header( "Cache-Control: no-store, no-cache, must-revalidate" ); header( "Cache-Control: post-check=0, pre-check=0" , false); require_once ( "dbconnect.php" ); ?> |
แสดงเป็น XML
1 2 3 4 5 6 | <?php header( "Content-type:text/xml; charset=UTF-8" ); header( "Cache-Control: no-store, no-cache, must-revalidate" ); header( "Cache-Control: post-check=0, pre-check=0" , false); require_once ( "db_connect.php" ); ?> |
ส่วนของการติดต่อกับ ฐานข้อมูล
การเชื่อมต่อกับฐานข้อมูล ในแต่ละวิธีการจะมีคำสั่งให้เรา
สามารถที่จะกำหนด charset ให้กับ ฐานข้อมูลของเราได้ ดังตัวอย่างตามรูป
เป็นการเชื่อมต่อด้วย mysqli

ตัวอย่างไฟล์ dbconnect.php เชื่อมต่อด้วย mysqli
1 2 3 4 5 6 7 8 9 10 11 | <?php $mysqli = new mysqli( "localhost" , "root" , "" , "test" ); /* check connection */ if ( $mysqli ->connect_errno) { printf( "Connect failed: %s\n" , $mysqli ->connect_error); exit (); } if (! $mysqli ->set_charset( "utf8" )) { printf( "Error loading character set utf8: %s\n" , $mysqli ->error); exit (); } |
ทั้งหมดเป็นแนวทางป้องกันกรณีการแสดงผลภาษาไทยเพี้ยน