當我創建使用UTF-8 BOM我的PHP文件中,header()函數不工作因爲bom字符是在http頭之前發送的。
- 這是否表示我們不應該在php源文件中使用bom?
- 它是一個功能或錯誤?
- 你使用UTF-8編碼的PHP源文件時有什麼建議?
當我創建使用UTF-8 BOM我的PHP文件中,header()函數不工作因爲bom字符是在http頭之前發送的。
<?php
標籤之前先輸出所有數據:-
<byte order mark><?php // code here
-
我不確定PHP是否按預期工作,因爲BOM是用於控制而不是內容 –
僅僅因爲它不是可打印的字符並不意味着它不應該被輸出。正如文檔所述,*標題之前的任何*輸出會導致'頭文件已發送'錯誤。如果我要創建一個僅包含從右到左的控制字符的空白頁面,我期望它被打印。 – RikkusRukkus
就是這樣,<?php標籤之外的任何內容都是直接輸出,就像以前一樣。 – Esailija
BOM是發送到瀏覽器的實際數據,但瀏覽器會忽略它,一旦發送它,除非使用輸出緩衝,否則無法發送標題。一般不要使用BOM。如果您使用的文本編輯器需要BOM,那麼請將編輯器更改爲不太過時的編輯器。
有數百個與PHP和BOM相關的SO問題 - 它們都不能爲您提供答案嗎? – AD7six
@ AD7six,我找不到任何人問是否它是一個錯誤 –
如果添加BOM使您的腳本無法正常工作,那麼解決方案與那個老醫生的笑話一樣。 「醫生,當我這樣做的時候會很痛苦」。 「那麼不要那樣做,那麼!」 – GordonM