2012-12-04 35 views
0

可能重複:
「Warning: Headers already sent」 in PHPUTF-8 BOM和PHP頭

當我創建使用UTF-8 BOM我的PHP文件中,header()函數不工作因爲bom字符是在http頭之前發送的。

  • 這是否表示我們不應該在php源文件中使用bom?
  • 它是一個功能或錯誤?
  • 你使用UTF-8編碼的PHP源文件時有什麼建議?
+1

有數百個與PHP和BOM相關的SO問題 - 它們都不能爲您提供答案嗎? – AD7six

+0

@ AD7six,我找不到任何人問是否它是一個錯誤 –

+0

如果添加BOM使您的腳本無法正常工作,那麼解決方案與那個老醫生的笑話一樣。 「醫生,當我這樣做的時候會很痛苦」。 「那麼不要那樣做,那麼!」 – GordonM

回答

0
  • BOM在UTF-8中無用。
  • 既不是。 PHP按預期工作。你的文件由這一點,和PHP是否按預期運行,因爲它開<?php標籤之前先輸出所有數據:

-

<byte order mark><?php // code here 

-

  • 別不使用BOM。
+0

我不確定PHP是否按預期工作,因爲BOM是用於控制而不是內容 –

+0

僅僅因爲它不是可打印的字符並不意味着它不應該被輸出。正如文檔所述,*標題之前的任何*輸出會導致'頭文件已發送'錯誤。如果我要創建一個僅包含從右到左的控制字符的空白頁面,我期望它被打印。 – RikkusRukkus

+0

就是這樣,<?php標籤之外的任何內容都是直接輸出,就像以前一樣。 – Esailija

0

BOM是發送到瀏覽器的實際數據,但瀏覽器會忽略它,一旦發送它,除非使用輸出緩衝,否則無法發送標題。一般不要使用BOM。如果您使用的文本編輯器需要BOM,那麼請將編輯器更改爲不太過時的編輯器。