2009年2月18日 星期三

無 BOM 有 BOM ~ UTF8 BOM BOM ~ Header already sent by ...

http://blog.roodo.com/jaceju/archives/1100799.html

其實我對 BOM 也不是很熟,還是看看上面專業的文章介紹吧,當 PHP 要用到 Header 還是 SESSION COOKIE 之類的,前面不可有任何輸出(譬如session_start),出現這種問題大多都跟這個 BOM 有關(UltraEdit在存檔時下面類型可選無BOM)

一存完會看到檔頭有少掉幾個字,如果這時補回來之後又會恢復之前的問題(這我不知道該怎麼做才對)

我的做法是存完無 BOM 之後把檔關掉再重開,前面那幾個字又回來了。

除了會影響到 PHP 程式之外,BOM 還會影響到頁面輸出,會多跑出一行空白來,如果不知道的話可能會抓錯誤抓到吐血 ...

這問題好像在 BIG5(存成ANSI/ASCII)比較不會有

但當把 BIG5 檔存成 UTF8,就會跑出這樣的問題(因為自己在套一些頁面時需要轉 UTF8,就要執行這樣得動作),即使是靜態頁面也一樣,不然會莫名跑出一行空白。

這是個滿基本的東西,不過在 PHP 版每過一陣子總會有人問,也就只有這類問題是我比較有自信可以回的 Orz ...

5 則留言:

老爺 提到...

朋友泥好阿~我在熟版看到你的自介,我也是一年都會出國幾次的人~所以過來晃晃你的網頁.......希望以後可以多交流,雖然我一點都不會寫程式啦,汗顏...哈哈,很高興認識你。

阿天 提到...

Hi ! 有這方面可以問問我呀 ~ 是呀,我超愛出國的 :D
下次可以多交流,如果你想要弄什麼有關資料庫的也可以問一下 ~ 都是鄉民嘛 ~
大家各有所長呀 ~

匿名 提到...

搜索UltraEdit里的BOM不小心到你這兒來了哈。區別好像在於有BOM保存里英文字母是一個字節,漢字是3個字節,文件開頭沒有FFFE,而無BOM文件開頭有FFFE,英文和漢字都是兩個字節。以上是我保存文件時候發現的,不過還是沒懂BOM的確切含義

匿名 提到...

剛說反了。
無BOM保存里英文字母是一個字節,漢字是3個字節,文件開頭沒有FFFE,而有BOM文件開頭有FFFE,英文和漢字都是兩個字節。

匿名 提到...

大大真是相見恨晚阿!!
我抓頁首多出空白來(我一直以為是上方margin出錯了...一直找CSS)
Bug抓到後來找到了BOM這個問題,才發現你的網頁...@@