การที่ข้อมูลเพี้ยนเป็นภาษาต่างดาวเกิดจากปัญหาการ encode ข้อมูลไม่ตรงกัน
1. การ export ข้อมูลมาเป็นไฟล์ sql ให้ทำการตรวจสอบเรื่อง encode ก่อนว่าเดิมเราใช้ encode ข้อมูลว่าอะไรโดยดูที่ตารางใน database ผ่าน phpMyAdmin
2. หลังจาก export มาเป็นไฟล์ .sql แล้วให้ทำการเปิดเช็คไฟล์ดูก่อนด้วยครับว่าไฟล์ที่ dump ออกมามองเห็นเป็นภาษาไทยถูกต้อง มีเพี้ยนหรือไม่ ถ้าเพี้ยนต้องทำการ export ออกมาไม่ให้เพี้ยนก่อนครับ
3. หลังจากนั้นเมื่อสร้าง database แล้ว import ข้อมูลจากไฟล์ sql ลงไปบนโฮสแล้ว ให้เราเช็คใน table ที่ได้ทำการ import ดูด้วยครับว่า encode ตรงกับที่เก่าที่เราย้ายมาหรือไม่ ดูจาก collation ใน phpMyAdmin แล้วก็เช็คข้อมูลที่ฟิลด์ภาษาไทยด้วยว่าเป็นภาษาไทยมีการเพี้ยนไปหรือไม่ ถ้าเพี้ยนต้อง import เข้าไปใหม่ครับโดยให้ encode ตรงกัน
4. ถ้าข้อมูลใน database ถูกต้องดีแล้วไม่มีการเพี้ยนให้ไปตรวจเช็คที่หน้า webpage ดูครับว่าได้ทำการระบุ charset ให้ตรงกับข้อมูลที่เรา encode ไว้ใน database หรือไม่
ตัวอย่างถ้า encode เป็น utf-8 ใน database ที่หน้า webpage ก็ต้องตั้งเป็น utf-8
ตัวอย่างถ้า encode เป็น tis-620 ใน database ที่หน้า webpage ก็ต้องตั้งเป็น tis-620
5. ถ้าข้อมูลใน database ไม่เพี้ยนและระบุในหน้า webpage ตรงกันแล้วยังเพี้ยนอยู่ ให้ทำการไปเช็คดูที่ code php ส่วนการ connect ดึงข้อมูลจาก database ครับ ให้เพิ่มบรรทัดพวกนี้ลงไป โดยใส่ charset ให้ตรงกับการ encode ข้อมูลใน database และหน้า website
ตัวอย่างถ้า encode เป็น utf-8 ใน database ที่หน้า webpage ก็ต้องตั้งเป็น utf-8
$testConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
$testDB = mysql_select_db("mydatabase");
mysql_query("SET character_set_results=utf8");
mysql_query("SET character_set_client=utf8");
mysql_query("SET character_set_connection=utf8");
ตัวอย่างถ้า encode เป็น tis-620 ใน database ที่หน้า webpage ก็ต้องตั้งเป็น tis-620
$testConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
$testDB = mysql_select_db("mydatabase");
mysql_query("SET character_set_results=tis620");
mysql_query("SET character_set_client=tis620");
mysql_query("SET character_set_connection=tis620");