A-AA+then

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

ปัญหานี้ มีสาเหตุและการแก้ไข ที่ผมเคยพบอยู่ 3 กรณี

1. ปัญหาจากการใช้ preg_replace บางครั้งเราอาจต้องใช้ฟังก์ชั่นนี้ในโค้ด โดยพื้นฐานแล้ว ฟังกชั่นนี้มันทำงานกับ Ansi ครับ แต่เราก็สามารถบังคับให้มันทำงานในโหมด UTF-8 ได้ด้วยการเพิ่ม flag ครับ (u ตัวเล็ก) เช่น

preg_replace( '/....../usi' );

ปัญหานี้เกิดกับฟังก์ชั่นในกลุ่มนี้ ทุกตัวนะครับ

2. ปัญหาจากตัว Server เอง อันนี้ผมได้รับรายงานมาจาก Webmaster ท่านอื่นครับ เนื่องจากผมมักจะเขียนโค้ดเป็น UTF-8 ตอนทดสอบกับ Server ของผมมันก็ปกติดี แต่พอย้าย Server มนก็เลยเพี้ยน ปัญหานี้เขาแจ้งมาว่าเขาแก้ที่ Server อันเนื่องมาจาก phpMyAdmin มันเรียก Service ซ้อนกันครับ (เขาแจ้งมานะ)

3. ปัญหาของ phpMyAdmin อันนี้ ก็ไม่รู้สาเหตุจริงๆ เหมือนกัน รู้แต่ว่าจะแก้ไขได้ยังไงเท่านั้น... ปัญหาก็คือทำการสร้างฐานข้อมูลที่เป็น UTF-8 ถูกต้องทุกอย่าง การแสดงผลตัวอักษรอื่นๆ ก็ถูกต้อดี ยกเว้นตัว ภ ใน case นี้ ผมใช้วิธีสร้างฐานข้อมูลเป็น Latin1 และสร้างฟิลด์แบบ TIS-620 แทนครับ มันก็ใช้ได้ผลเหมือนกัน

ข้อที่ 1 เป็นปัญหาอันเกิดจากความผิดพลาดของการเขียนโค้ด ครับ การแก้ไขก็แก้ไขที่โค้ดของเรา ส่วนปัญหาข้อ 2 และ 3 ผมมองว่ามันอาจเป็นปัญหาเดียวกัน เพียงแต่เราอาจไม่สามารถแก้ไข Server เองได้ ก็ให้ลองเลี่ยงมาใช้วิธีแก้ปัญหาตามข้อ 3 แทน


Relate

^