แนวทางป้องกันปัญหาการแสดงผลภาษาไทยในไฟล์และฐานข้อมูล

เขียนเมื่อ 7 ปีก่อน โดย Ninenik Narkdee
ภาษาไทย ปํญหาภาษาไทย

คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ ภาษาไทย ปํญหาภาษาไทย

ดูแล้ว 8,024 ครั้ง


เพื่อป้องกันปัญหากรณีการแสดงผลภาษาไทยในหน้าเว็บหรือหน้าเพจของเรา
ผิดเพี้ยนไป พยายามก่อนเริ่มโปรเจ็คหรืองานของเราให้กำหนดส่วนจัดการต่างๆ
เป็น 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();  
}  
 
 
ทั้งหมดเป็นแนวทางป้องกันกรณีการแสดงผลภาษาไทยเพี้ยน 


กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ











URL สำหรับอ้างอิง





คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )







เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ