#เล่าสู่กันฟัง 63-018 แก้ภาษาไทยใช้ผิดชุด และต้องเปลี่ยน

ค่าปริยายเซตของตัวอักษร (Character Set) สามารถกำหนดในแฟ้ม php.ini ด้วย default_charset = “UTF-8” มีผลให้เว็บเพจใน server จะแสดงผลแบบ UTF-8 ทำให้ผู้พัฒนาต้องกำหนดการ encoding ของ code ที่เขียนด้วยภาษา php เป็น UTF-8 และข้อมูลที่อ่านมาแสดงผล ต้องปรับให้เป็น UTF8 

http://www.thaiall.com/php/php7.htm

หากอ่านข้อมูล Text มาเป็น TIS-620 ต้องแปลงด้วย echo iconv(‘TIS-620′,’UTF-8’,$data); พบว่า มีบางตัวอักษร เช่น ตัวอักษร hex93(147) และ hex94(148) ซึ่งเป็น “ เปิดและ ” ปิด ที่แสดง Notice : error ขณะใช้ iconv

แก้ไขโดยใช้ echo iconv(‘TIS-620′,’UTF-8//ignore’,$data);

ก่อนใช้ iconv สามารถตรวจสอบได้ว่ามีการกำหนด default_charset ไว้เป็นอะไรด้วยคำสั่ง ตรวจสอบ ini_get(‘default_charset’)

กรณีศึกษา การนำเสนอสารสนเทศ
1. ที่ทำงานต้องการส่งออก excel
ไปแสดงในเว็บไซต์ ให้บุคลากรเข้าถึงแบบ
อินทราเน็ต
ยืนยันด้วยรหัสบุคลากร
ผลลัพธ์จำแนกตามหน่วยงาน ตามคน และมีชาร์ตวิเคราะห์ผล
2. เตรียมข้อมูลใน excel ในแบบที่หน่วยงานถนัด
แล้ว save as เป็น Text (Tab limited)
แฟ้มที่ได้เข้ารหัสภาษาแบบ TIS-620
ถูกเตรียมให้ใช้งานบนเว็บไซต์
3. ในเครื่องบริการ ที่กำหนด charset
เริ่มต้นเป็น UTF-8 ทำให้แฟ้มข้อมูล .txt
และแฟ้มโปรแกรม .php ต้องเป็น UTF-8
4. อ่านข้อมูลมาแสดงทันทีไม่ได้ แสดงผลผิดเพี้ยนไป เพราะชุดอักษรต่างกัน จึงใช้ iconv เปลี่ยนรูปแบบ หากใช้แล้วมีปัญหา ให้เติม //ignore หลังคำว่า UTF-8
5. มีตัวอักษรที่แปลงด้วย iconv ไม่ได้จำนวน 41 ตัว เช่น double quote ตัวที่ 147 และ 148 เมื่อใช้ //ignore ก็ทำให้มองข้ามไปได้