Skip to content

[網頁][php]亂碼?怎麼又是BOM啊…

去年在學php的時候,遇到了找不出錯誤的問題
Warning: Cannot modify header information – headers already sent by (output started at C:\AppServ\www\test\guestmsg.php:1) in C:\AppServ\www\test\guestmsg.php on line 61
google了一下揪出了元兇--BOM: Byte Order Mark
UTF-8 BOM又叫UTF-8 簽名,其實UTF-8 的BOM對UFT-8沒有作用,是為了支援UTF-16,UTF-32才加上的BOM,BOM簽名的意思就是告訴編輯器當前檔採用何種編碼,方便編輯器識別,但是BOM雖然在編輯器中不顯示,但是會產生輸出,就像多了一個空行。
使用 utf-8 編碼來編寫網頁的時候, 往往會因為 bom (Byte order Mark) 的問題,導致網頁中經常出現一些不明的空行或者亂碼字元。 這些都是因為 utf-8 編碼方式對於 bom 不是強制的。

原以為這就是跟BOM的一面之緣,讓我知道不要用微軟的記事本去寫php網頁~
想不到會再續前緣
這次有同學問說為什麼在Mac上的php無法顯示中文呢?因為Dreamwaver是英文版嗎?
怎麼可能!?網頁不都是認編碼的嗎?
其實在問我Apache啟動後怎麼沒有PHP時我已經有點汗顏了,平常都是用PC的套件,
不過後來同學自己找到了XAMPP,我只幫忙找到了伺服器資料夾在XAMPP底下的htdocs
離開這點,亂碼這小問題總該可以解決吧
直覺性的加上了mysql_query(“set names ‘utf8′”);還是亂碼!
第一個想到的就是資料庫編碼對應,
查了一下怎麼都是些乍看很複雜的文啊囧!有點懶說…
而且等等…根本就還沒開始連結資料庫啊…不過是簡單的for迴圈跟echo而已耶…
翻翻別的網頁,echo有顯示中文阿!
於是想到了頁面屬性…
看到了勾選著的BOM…去掉這個勾~
喔耶~亂碼消失了!!
原來原來,還是不可以小看BOM…
後記:以後也來研究MAC吧…http://www.nep-hk.com/drupal/?q=node/59

© 2012, Chaneswin. 如發現留有早期非原創作品可以留言回報喔~感謝您的幫忙 🙂


文章如有幫助,先按讚,再分享,歡迎贊助哦!