UTF-8 กำลังจะมาแทนที่ TIS-620 แล้ว มอก. ยังนิ่งอยู่สุดท้ายจะลงเอยอย่างไร...

ขณะที่ผมเขียนบันทึกนี้อยู่สมองผมก็ยังสับสนว่าจะไปในทิศทางไหนดีระหว่าง 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 เลยทีเดียว…

ไว้ได้เรื่องแล้วจะนำมาบอก… หรือใครทราบแล้วก็อย่ารอช้า… เขียนไว้ให้คนภายหลังได้รู้เถอะครับ…