ขณะที่ผมเขียนบันทึกนี้อยู่สมองผมก็ยังสับสนว่าจะไปในทิศทางไหนดีระหว่าง utf-8 และ tis-620 แต่ในใจผมก็เอนเอียงไปยัง utf-8 มากขึ้นเรื่อย ๆ เพราะข้อมูลที่ได้รับ และความเข้ามากยิ่ง ๆ ขึ้น
เดิมผมมักจะเขียนเว็บเพจด้วยรหัส windows-874 อันเป็นมาตรฐานที่ติดมากับ วินโดว์ จนเคยชินจนไม่มีการเปลี่ยนแปลงมานานแสนนาน แต่แล้วก็เจอปัญหาเมื่อเปลี่ยนมาใช้ mysql 5.0 แล้วบังเอิญค่าเริ่มต้นที่ลงไว้ในเซิร์ฟเวอร์เป็น utf-8 ทำให้ข้อมูลที่ insert เข้าไปเป็นภาษาแปลก ๆ ที่อ่านไม่ออกไปเสีย ก็เลยลงมือค้นคว้าไปหลายรอบ จนแล้วจนรอดก็ยังมึนงงกับมาตรฐานต่าง ๆ
แต่ผมเองก็ยังคงตั้งหน้าตั้งตาใช้ windows-874 กัน tis-620 จนกระทั่งได้มาพัฒนาโปรแกรมด้วย AJAX เมื่อดึงข้อมูลมาจากฐานข้อมูลแล้วแสดงบนหน้าจอจะเป็นเครื่องหมาย ? ทุกตัวอักษรที่เป็นภาษาไทยก็ยิ่งงงไปกันใหญ่ เข้าไปค้นหาในเว็บต่าง ๆ เกี่ยวกับ AJAX ก็บอกเพียงแต่ว่าให้เปลี่ยนการเข้ารหัสตัวอักษรเป็น tis-620 หรือบ้างก็บอกว่าต้องเข้ารหัสแบบ utf-8 แต่แล้วผมก็ลองทุกวิถีทางตามที่เขาบอกอย่างไม่เข้าเหตุผล แต่ก็ไม่ได้ผลข้อมูลออกมาเป็น ? ตลอดจนผมท้อ เลิกเขียน AJAX ไปพักใหญ่ แต่ในที่สุดก็จำเป็นต้องเขียนแบบภาคบังคับ
ด้วยความบังเอิญเมื่อผมเปลี่ยนโปรแกรมมาเป็น XAMP ซึ่งรหัสภาษาไทยที่เขียนใหม่เป็น utf-8 แล้วลองใช้ AJAX แล้วเป็นภาษาไทยโดยไม่ได้ทำอะไรเลย ก็แปลกใจมาก ลองสังเกตดูก็ถึงบางอ้อ ว่าเดิมทีเราเข้ารหัสผิดอยู่ เมื่อแสดงยังไงก็ไม่เป็นภาษาไทยละสิ…
ปัจจุบันโปรแกรมต่าง ๆ มักจะมาพร้อมกับมาตรฐาน utf-8 เกือบจะหมดแล้ว ด้วยความสามารถที่เข้ารหัสตัวอักษรได้มากมายหลายภาษา แต่ปัญหาของ utf-8 ประการหนึ่งที่ผมเองยังชั่งใจอยู่คือการจัดเรียงตัวอักษรเป็นแบบ binary โดยจะเรียงเริ่มตั้งแต่อักษรแรก ซึ่งการเรียงในภาษาไทยจะมีสระขึ้นก่อนเช่น กา กับ เก จะถูกจัดเรียงห่างกันคนละโยชน์เลยทีเดียว สระ เอ จะถูกเรียงไว้หลังตัว ฮ เสียอีก และข้อเสียการใช้งาน utf-8 สำหรับเก็บภาษาไทยก็คือต้องใช้พื้นที่จัดเก็บถึง 3 ไบท์ ทีนี้ก็ลองคิดดูนะว่าขนาดพื้นที่ฮาร์ดดิสก์จะเสียไปสักเท่าใดในการเก็บข้อมูลภาษาไทยมาก ๆ
แต่การพิสูจน์ยังไม่จบครับ ผมกำลังจะทำการทดสอบเรื่องปัญหาภาษาไทยใน MySQL คือ หลาย ๆ ตัวอักษรจะถูกมองว่าเป็นตัวอักษรชนิดเดียวกัน เช่น ม กับ ร ปัญหานี้จะเกิดกับคนที่ตั้งรหัสเป็นภาษาไทย เช่น ตัวย่อจังหวัด ชม (เชียงใหม่) กับ ชร (เชียงราย) จะถูกเหมาโหลว่าเป็นจังหวัดเดียวกัน เล่นเอาต้องเขียนโปรแกรมตรวจสอบรหัสกันถึงขั้นใช้ ascii code เลยทีเดียว…
ไว้ได้เรื่องแล้วจะนำมาบอก… หรือใครทราบแล้วก็อย่ารอช้า… เขียนไว้ให้คนภายหลังได้รู้เถอะครับ…
ขอบคุณมากครับที่ให้ความรู้
แจ่มครับ ผมเองก็เพิ่งจะเขียนเรื่องนี้ไว้เมื่อตะกี๊นี้เอง พอดีกดค้นหาคีย์เวิร์ดคำว่า utf-8 ก็เลยมาเจอของคุณ ลองเข้าไปอ่านดูนะครับเผื่อจะแบ่งปันความรู้กันบ้างครับ การพัฒนาจะได้เร็วขึ้นครับ
ที่นี่นะครับ http://gotoknow.org/blog/enjoyman/184298