หลายครั้งที่เรา Query ข้อมูลที่เป็นภาษาไทย ออกมาแล้วแล้วอ่านไม่ออก เลยรวบรวมปัญหาและวิธีแก้ไขใว้ (บันทึกกันลืม)
Encoding ไม่ใช่ UTF-8 เลยทำให้แสดงภาษาไทยเป็นภาษาต่างดาว
อาจจะเป็นเพราะ encoding ไม่ใช่ UTF-8

หากหาที่เปลี่ยน Encoding ไม่เจอให้ดูตามลิ้งนี้ครับ การเปลี่ยน encoding ใน google chrome, Firefox, IE, Safari
กำหนดค่าเริ่มต้นให้ encode เป็น utf-8 โดยใส่โค๊ดข้างล่างนี้ ใว้ด้านบนของเว็บไซต์
แบบ PHP
|
header('Content-Type: text/html; charset=utf-8'); |
แบบ html
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> |
แก้ปัญหาข้อมูลใน MySQL อ่านภาษาไทยไม่ออก
ในขั้นตอนการสร้าง Database ให้เลือก Collation เป็น utf8_general_ci

ในขั้นตอนการสร้าง Table และ filed ให้เลือก Collation เป็น utf8_general_ci

หากในการ Query ข้อมูลขึ้นมาแล้วอ่านภาษาไทยไม่ออก ลองใส่โค๊ดด้านล่างหลังโค๊ด Connect DB ดูครับ
|
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('Could not connect: ' . mysql_error()); } mysql_select_db('mysql_databasename',$link) or die("Couldn't connect to DB!"); //ใส่โค๊ดด้านล่างนี้เพื่อทำให้ Query ข้อมูลออกมาเป็นภาษาไทย mysql_query("SET character_set_results=utf8"); mysql_query("SET character_set_client='utf8'"); mysql_query("SET character_set_connection='utf8'"); mysql_query("collation_connection = utf8_unicode_ci"); mysql_query("collation_database = utf8_unicode_ci"); mysql_query("collation_server = utf8_unicode_ci"); // |
หาก Connect ด้วย MySQLi
|
$mysqli = new mysqli('localhost','username','password','db_name'); if ($mysqli->connect_errno) { die( "Failed to connect to MySQL : (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); } $mysqli->set_charset("utf8"); |
ตัดข้อความภาษาไทยด้วย substr ใน php แล้วมีรูปสี่เหลี่ยม หรือตัวอักษรท้ายๆอ่านไม่ออก

ให้แก้ไขโดยใช้โค๊ดข้างล่างนี้แทน
|
iconv_substr($text, 0,100, "UTF-8"); |
แปลงข้อความจาก encoding UTF-8 เป็น TIS-620
|
string iconv ( string $in_charset , string $out_charset , string $str ) |
ตัวอย่าง
|
iconv( 'UTF-8' , 'TIS-620' ,$text); |
ป้ายกำกับ:mysql, php