หลายครั้งที่เรา Query ข้อมูลที่เป็นภาษาไทย ออกมาแล้วแล้วอ่านไม่ออก เลยรวบรวมปัญหาและวิธีแก้ไขใว้ (บันทึกกันลืม)
อาจจะเป็นเพราะ encoding ไม่ใช่ UTF-8
หากหาที่เปลี่ยน Encoding ไม่เจอให้ดูตามลิ้งนี้ครับ การเปลี่ยน encoding ใน google chrome, Firefox, IE, Safari
กำหนดค่าเริ่มต้นให้ encode เป็น utf-8 โดยใส่โค๊ดข้างล่างนี้ ใว้ด้านบนของเว็บไซต์
แบบ PHP
1 |
header('Content-Type: text/html; charset=utf-8'); |
แบบ html
1 2 3 4 5 6 |
<!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> |
ในขั้นตอนการสร้าง Database ให้เลือก Collation เป็น utf8_general_ci
ในขั้นตอนการสร้าง Table และ filed ให้เลือก Collation เป็น utf8_general_ci
หากในการ Query ข้อมูลขึ้นมาแล้วอ่านภาษาไทยไม่ออก ลองใส่โค๊ดด้านล่างหลังโค๊ด Connect DB ดูครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$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
1 2 3 4 5 |
$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"); |
ให้แก้ไขโดยใช้โค๊ดข้างล่างนี้แทน
1 |
iconv_substr($text, 0,100, "UTF-8"); |
1 |
string iconv ( string $in_charset , string $out_charset , string $str ) |
ตัวอย่าง
1 |
iconv( 'UTF-8' , 'TIS-620' ,$text); |