|
เนื่องจากได้รับมอบหมายให้ย้าย hosting เว็บหนึ่ง แต่มีปัญหาเรื่องภาษาไทยของ MySQL ซึ่งเป็นปัญหาของเว็บรุ่นโบราณมากๆ ที่ยังคงใช้ Character set Latin1 และเก็บอักษรภาษาไทยที่เป็น TIS-620 ซึ่งเว็บในปัจจุบันนี้ได้เปลี่ยนแปลงไปเป็น UTF-8 กันไปเกินครึ่งค่อนโลกกันแล้ว เว็บส่วนตัวไม่มีปัญหาในการเปลี่ยนเป็น UTF-8 สักเท่าไรเพราะฐานข้อมูลไม่ใหญ่ และระบบก็เขียนเองทำให้แก้ไขอะไรได้ไม่ยาก แต่พอมาเป็น code ของคนอื่นเลยไม่อยากไปตามแก้ จึงต้องให้ใช้ TIS-620 กันต่อไป แต่ให้เข้ารหัสในฐานข้อมูลสมัยใหม่ให้เป็น TIS-620 อย่างถูกต้อง อันที่จริงจะใช้ Latin1 ต่อไปก็ได้ไม่มีปัญหา
จากตัวอย่างนี้ เว็บไซต์ใช้ MySQL โดยใช้ Character Set เป็น Latin1 และหน้าเว็บไซต์เป็น TIS-620 ปัญหาของการย้ายมันติดอยู่ตรงที่ phpMyAdmin สมัยใหม่ ไม่สามารถ export ข้อมูลออกมาเป็นภาษาไทยอย่างถูกต้องได้ จึงต้องใช้รุ่นเก่าๆ รุ่นที่แนะนำคือ 2.5.4 ซึ่งหาบนหน้า official ไม่ได้แล้ว โชคดีว่ามีเว็บที่เก็บ script เก่าเอาไว้อยู่
ขั้นตอนการแปลงมีดังนี้
1. ดาวน์โหลดและติดตั้ง phpMyAdmin 2.5.4จาก OldApps.com ชื่อตรงตัว
2. เลือก Language เป็น Thai (th-tis-620)
3. เลือกไปที่ "ส่งออก" หน้าแสดงตารางทั้งหมด
4. เปิดไฟล์ที่ได้ด้วยโปรแกรม Text Editor (ผมใช้ gEdit) แล้ว replace คำว่า latin1 ด้วย tis620
5. สร้างฐานข้อมูลใหม่ที่ต้องการจะนำเข้าแล้วเลือก collation เป็น tis620_thai_ci เสร็จแล้ว import ด้วย phpMyAdmin รุ่นปัจจุบัน (ผมใช้ 2.9.0.1 ซึ่งจริงๆ ก็เก่าแล้วเช่นกัน) เลือก Character set เป็น tis-620
6. ลองเปิดดูจะเห็นว่าอ่านภาษาไทยได้แล้ว ใช้กับหน้าเว็บไซต์ที่เขียนด้วย TIS-620 ได้ต่อไป (แต่ผมใช้คำสั่ง mysql เนื่องจากไม่สามารถ upload ไฟล์ขนาดใหญ่ใน phpMyAdmin ได้โดยใช้ mysql -u root -p [database] --default-character-set=tis620 < old-tis620.sql)
7. ใช้คำสั่ง query ใน script หน้าเว็บหลังจาก connect database ด้วย set names tis620 collate tis620_thai_ci;
ปล. เนื่องจากวันนี้งานสำเร็จด้วย phpMyAdmin อีกแล้ว หลังจากใช้งานกันมาเกือบ 10 ปี นึกครึ้มหา link donate เลยจัดไป $10 ทาง PayPal เรียบร้อย ขอบคุณ phpMyAdmin
ลิงค์ถาวร
|