กระโดดไปยังแผงนำทาง

เวียนหัวกับการแปลงค่า UTF-8 11 September 2006 1:05 pm

บันทึกโดย Mr. PeeTai ใน : ข่าวสาร , ตรวจย้อนกลับ

หลายวันมานี้ผมกำลังสร้างซอฟต์แวร์ตัวใหม่อยู่ครับ ซึ่งจำเป็นที่จะต้องใช้ฐานข้อมูล MySQL ในการเก็บค่าคงที่ต่าง ๆ รวมถึงตารางเทียบค่า เพื่อไว้เทียบค่าหลาย ๆ อย่างด้วย

ทีนี้ไอ้เจ้าซอฟต์แวร์ที่จะทำแล้วเอามาวางไว้บนพี่ไท้.คอมตัวนี้เนี่ย ผมต้องการให้แสดงผลเป็นภาษาไทย แล้วก็อยากให้เข้ารหัสเป็น UTF-8 ด้วย ก็เลยวุ่นวายน่าดูครับ โดยเฉพาะตอน Import / Export ข้อมูลเข้า ๆ ออก ๆ ฐานข้อมูล

ผมเสียเวลาทดลองมาหลายวันครับ คิดว่าพอจะรู้วิธีแล้วว่าต้องทำไงบ้าง มันแย่หน่อยนะครับที่ข้อมูลที่เราเตรียมเอาไว้มันเป็น ASCII ซึ่งระบบมองว่ามันเป็นการเข้ารหัส TIS-620 แต่พอเรา Import เข้าไปแล้ว มันดันไม่แปลงให้เป็น UTF-8 ซะนี่ ต้องมา Export ใหม่อีกครั้งนึงถึงจะได้เป็น UTF-8 ออกมา

โดยวิธีการที่ผมทำ ผมทำแบบนี้ครับ

  1. สร้างข้อมูลเอาไว้ใน Microsoft Excel ครับ ไฟล์นึงมีหลายเรคคอร์ด เรคคอร์ดนึงมีหลายฟิลด์
  2. Export จาก Excel มาเป็น Text File ครับ
  3. ใช้ phpMyAdmin - 2.8.2.4 เป็นตัว Import เข้าฐานข้อมูล โดยเลือกว่าจะ Import รหัสแบบ TIS-620
  4. จากนั้นใช้ phpMyAdmin - 2.8.2.4 ทำการ Export สคริปต์ SQL ออกจากฐานข้อมูลมาไว้เป็น Text File เราก็จะได้ทั้งคำสั่งสร้างตาราง และคำสั่งบรรจุข้อมูล ซึ่งถ้าข้อมูลเป็นภาษาไทยก็จะถูกเข้ารหัสไว้เรียบร้อยแล้ว
  5. แล้วก็ Drop ทุกตารางในฐานข้อมูลทิ้ง เพราะเดี๋ยวจะทำทุกอย่างใหม่
  6. จากนั้นใช้ phpMyAdmin 2.5.7-pl1 ทำการ Import สคริปต์ SQL จากข้อ 4. ใส่เข้าไปครับ ทีนี้ก็เรียบร้อยครับ เราจะได้ตารางข้อมูลที่บรรจุข้อมูลภาษาไทยซึ่งเข้ารหัสแบบ UTF-8 ครับ

พอทำครบทุกขั้นตอนแล้ว ไม่ว่าเราจะเปิดข้อมูลในตารางดูด้วย phpMyAdmin 2.5.7-pl1 หรือ phpMyAdmin - 2.8.2.4 หรือแม้กระทั่งเขียนโปรแกรมด้วย PHP ให้อ่านข้อมูลจากตารางข้อมูลมาแสดงผล ภาษาไทยของเราก็จะสอดคล้องกับรหัส UTF-8 ครับ

จุดที่แตกต่างของ phpMyAdmin ทั้งสองรุ่นก็คือ

  1. รุ่น 2.5.7-pl1 จะสนับสนุนรหัสตาม Locale Setting ของเครื่องเราครับ พอดีเครื่องผมกำหนดไว้ว่าเป็นภาษาไทย มันก็เลยเข้ารหัสทุกหน้าจอของมันให้เป็น TIS-620 หรือเรียกอีกอย่างนึงว่า Thai (Windows) ครับ
  2. รุ่น 2.8.2.4 จะสนับสนุนรหัส UTF-8 เท่านั้นครับ มันจะไม่สนใจเลยว่าเครื่องของเรากำหนดเป็นภาษาท้องถิ่นอะไรไว้ มันจะเข้ารหัสเป็น UTF-8 เพียงอย่างเดียว

ผมก็เลยอาศัยจุดแตกต่างของทั้งสองรุ่น มาแปลงไปแปลงมาข้อมูลภาษาไทยของผมซะเลย

ความคิดเห็น»

ไม่มีความคิดเห็นอ่ะ - อยากเป็นคนแรกมั้ย?


*
เพื่อพิสูจน์ว่าคุณเป็นมนุษย์ (ไม่ใช่หุ่นยนต์) ดังนั้น กรุณาใส่รหัสป้องกันซึ่งแสดงอยู่ด้านล่างด้วยครับ
Anti-Spam Image