วันศุกร์ที่ 3 ธันวาคม พ.ศ. 2553

UTF8+BOM เจ้าปัญหา กับ header("Content-Type: image/png") in CodeIgniter

ก่อนอื่นต้องทำความรู้จักกับ เจ้า BOM  ก่อนนะครับ โดนปกติแล้ว UTF8 จะ มีด้วยกัน 2 แบบนะครับ utf-8 without BOM กับ utf-8 with BOM ซึ่ง utf-8 with BOM นี่แหละที่มักจะก่อปัญหา error ต่างๆมากมาย เช่น 
- Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent
- The image "http://so2pro.blogspot.com/" cannot be displayed, because it contains errors
และอีกมากมาย เลยครับ ส่วนที่ผมโดน นะครับเป็น ตัว image นี้แหละครับ คือมันไม่ยอมโชว์ รูป



มาดูหน้า ตาเจ้า bom กันครับ 

<?php
  echo "firt character";
?>

แล้ว  save เลยครับ 

อันนี้ เป็น utf-8 without BOM

utf-8 with BOM
เห็นไหมครับ จะมี ตัวเพิ่มขึ้นมา 3 ตัวแรก แปลกๆๆ มา นั้นแหละคือตัว error ของเรา เวลาเซฟก็ดูดีๆๆแล้ว กันนะครับ มาดูวิธีแก้กัน นะครับ เห็นไหมครับ ว่ามีให้เลือกเวลา เซฟ ด้วย

อันนี้เป็น วิธีเซ็ด เวลาใช้โปรแกรม นะครับ ทำให้มันเป็น utf8 ธรรมดาซ่ะก่อน ป้องกัน error ได้


 dreamweaver 
edit plus

จบแล้ว ครับผม อันนี้ก็เป็นข้อคิดให้ได้ นะครับ ต้องขอขอบคุณทุกคนที่ (พี่ก๊อฟ  เพ่เอ และเพ่ แหน่ง ใน ทีม info sanook!) ช่วยกันหาทางแก้นะครับ อิอิ ความรู้ใหม่ของผมเลยแหละครับ จะจำชื่อนี้ไปอีกนาน ติดมา 3 วัน เต็มๆ เพราะเจ้า bom 
*error ไม่จำเป็นต้อง อยูที่ไฟล์นี้ไฟล์เดียวนะครับ ใน ci อาจไปอยู่ ที่ config หรือ system เราก็ได้

1 ความคิดเห็น: