เพื่อป้องกันปัญหากรณีการแสดงผลภาษาไทยในหน้าเว็บหรือหน้าเพจของเรา
ผิดเพี้ยนไป พยายามก่อนเริ่มโปรเจ็คหรืองานของเราให้กำหนดส่วนจัดการต่างๆ
เป็น utf8 หรือ หากเป็นโค้ดเดิม ไม่ใช่ utf8 ให้ปรับให้เป็นตามที่จะแนะนำ
ปล. กรณีเป็นแก้ไขจากไฟล์เดิม แนะนำให้ทำการแบ็คอัพไฟล์เดิมหรือฐานข้อมูล
เดิมไว้ก่อน เพื่อป้องกันกรณีข้อมูลสูญหาย แต่สำหรับเริ่มโปรเจ็คใหม่สามาระปรับตามได้เลย
ส่วนของ ฐานข้อมูล สามารถกำหนดได้ตามรูป
โดยกำหนด COLLATE เป็น utf8_general_ci
หรือถ้าเป็นค่าอื่นอยู่ ก็สามารถเข้าไปแก้ไขเป็น Collation เป็น utf8_general_ci
ตัวอย่างคำสั่ง sql สร้างฐานข้อมูล
CREATE DATABASE IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
ส่วนของการ สร้างตาราง ในฐานข้อมูล สามารถกำหนดได้ตามรูป
โดยกำหนด Collation ป็น utf8_general_ci
ตัวอย่างคำสั่ง sql สร้างตาราง
-- -- 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
<!doctype html> <html> <head> <meta charset="utf-8"> <title>Untitled Document</title> </head> <body> </body> </html>
กรณีกำหนดในไฟล์ที่ไม่ได้มีโครงสร้าง html แบบเต็ม หรือไฟล์ที่เป็น ajax ไฟล์ที่เป็น
json ไฟล์ หรือ xml ไฟล์ หรือไฟล์ที่เกิดจากการสร้างด้วย php เราสามารถกำหนด header
ของไฟล์ ดังนี้ โดยกำหนดไว้ด้านบนสุดของไฟล์
แสดงผลเป็น HTML
<?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
<?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
<?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
<?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(); }
ทั้งหมดเป็นแนวทางป้องกันกรณีการแสดงผลภาษาไทยเพี้ยน