Google,360瀏覽器,QQ瀏覽器中網頁頂部有bom頭;Firefox瀏覽器顯示正常。
我試了好多種辦法(Dreamweaver,Notepad++,網上搜了個去除bom的程式檔案),最終還是沒能解決,請問各位大神還有什麼辦法嗎?
這是Google瀏覽器中顯示bom圖的部分:
回複討論(解決方案)
檔案本身有漢字的,直接另存新檔 無BOM urf-8 編碼
檔案本身沒有漢字的,直接另存新檔 ANSI 編碼
從多語言版考慮,程式檔案中是不應該之間特定語種的文字的。而是在運行時刻通過字典充填內容的
檔案本身有漢字的,直接另存新檔 無BOM urf-8 編碼
檔案本身沒有漢字的,直接另存新檔 ANSI 編碼
從多語言版考慮,程式檔案中是不應該之間特定語種的文字的。而是在運行時刻通過字典充填內容的
我就是用編輯器儲存為無bom的utf-8編碼,還是不行,但是在Firefox瀏覽器中就正常。這是為什嗎?
所有相關的檔案都做了嗎?
不是所有的瀏覽器都能忽略 BOM 頭的
如果安裝了netbeans,用它開啟檔案,
如果檔案有bom頭,會在第一行最前面 顯示一個小點,刪除這個小點,儲存就可以了
所有相關的檔案都做了嗎?
不是所有的瀏覽器都能忽略 BOM 頭的
這是我的程式
"; }else{ $dirname = $basedir."/".$file; checkdir($dirname); } } } closedir($dh); } } function checkBOM ($filename) { global $auto; $contents = file_get_contents($filename); $charset[1] = substr($contents, 0, 1); $charset[2] = substr($contents, 1, 1); $charset[3] = substr($contents, 2, 1); if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) { if ($auto == 1) { $rest = substr($contents, 3); rewrite ($filename, $rest); return ("BOM found, automatically removed."); } else { return ("BOM found."); } } else return ("BOM Not Found."); } function rewrite ($filename, $data) {$filenum = fopen($filename, "w"); flock($filenum, LOCK_EX); fwrite($filenum, $data); fclose($filenum); }
我用這個去除bom也不行
你這個程式對刪除 utf-8 BOM 是有效
你可以這樣看看
$s = file_get_contents('http://localhost');echo bin2hex($s);貼出輸出的前20個字元
你這個程式對刪除 utf-8 BOM 是有效
你可以這樣看看
$s = file_get_contents('http://localhost');echo bin2hex($s);貼出輸出的前20個字元
這段代碼放在bom程式檔案裡還是?
從你的上看,有 字樣
這應該是 unicode 的 BOM 頭,要判斷檔案的頭2個字元的內碼值是否是 255 和 254
那段代碼單獨現在一個程式裡,執行
從你的上看,有 字樣
這應該是 unicode 的 BOM 頭,要判斷檔案的頭2個字元的內碼值是否是 255 和 254
輸出從第一個開始
那段代碼單獨現在一個程式裡,執行
這個是單獨執行的
你 #10 的中有 3 個 utf-8 BOM
你 #11 的中沒有 BOM
你 #10 的中有 3 個 utf-8 BOM
你 #11 的中沒有 BOM
看不懂,咋解決了
要去掉所有先關檔案中的 bom
你的那個程式放的位置很重要,再說你可能還引用了網站外的檔案
要去掉所有先關檔案中的 bom
你的那個程式放的位置很重要,再說你可能還引用了網站外的檔案
我的bom程式就放在項目根目錄,和其它檔案是兄弟關係。
如果你將項目中的檔案的 bom 都去除了,頁面中卻還有 bom 存在的話
那麼就表示你還使用了項目以外的檔案
如果你將項目中的檔案的 bom 都去除了,頁面中卻還有 bom 存在的話
那麼就表示你還使用了項目以外的檔案
找的我都頭大了,還是找不出來,謝謝你了
那你就把 bom程式 放到網站的根上運行
那你就把 bom程式 放到網站的根上運行
我懷疑這跟一些js有關係,網站裡有些程式檔案,都是js寫的
難道你認為 js 檔案不是 相關檔案 嗎?
難道你認為 js 檔案不是 相關檔案 嗎?
剛我把網站首頁裡那些js代碼去掉了還是不行
難道你認為 js 檔案不是 相關檔案 嗎?
因為這段js中的路徑是hm.src = "//hm.baidu.com/hm.js?54403e32d263feb8a8a2d4a630ccc73f";
誤以為跟它有關
你的網站在公網上嗎?貼出網址來
你的網站在公網上嗎?貼出網址來
http://www.25mj.com/
有 3 個 bom
請貼出 index.php
有 3 個 bom
請貼出 index.php
[東方美居官方網站]中國領先的裝修-建材-家居領域電子商務網站,專業裝修建材傢具消費導購平台 歡迎來到東方美居建材燈飾廣場 會員登入 會員註冊 個人中心 首 頁 找傢具 找建材 找輔料 美居之家
太長了,我分開,這是第一部分
有 3 個 bom
請貼出 index.php
總共要6萬多位元組,你說貼哪塊我貼出來
$url = 'http://www.25mj.com/';echo bin2hex(file_get_contents($url, false, null, 0, 20)), PHP_EOL;echo bin2hex(file_get_contents($url . 'inc.php', false, null, 0, 20));
efbbbfefbbbfefbbbf3c21444f43545950452048
efbbbfefbbbf
訪問你的 index.php,返回了 3 個 bom
訪問你的 inc.php,返回了 2個 bom
顯然你的 index.php、inc.php 以及在 inc.php 中 include 的一個檔案中 有 bom
你是怎麼執行你的 去除bom程式 的?
還是只放上去了沒有執行?
$url = 'http://www.25mj.com/';echo bin2hex(file_get_contents($url, false, null, 0, 20)), PHP_EOL;echo bin2hex(file_get_contents($url . 'inc.php', false, null, 0, 20));
efbbbfefbbbfefbbbf3c21444f43545950452048
efbbbfefbbbf
訪問你的 index.php,返回了 3 個 bom
訪問你的 inc.php,返回了 2個 bom
顯然你的 index.php、inc.php 以及在 inc.php 中 include 的一個檔案中 有 bom
你是怎麼執行你的 去除bom程式 的?
還是只放上去了沒有執行?
我的bom程式就在http://www.25mj.com/delete_bom.php 這裡執行的,這裡就是根目錄
$url = 'http://www.25mj.com/';echo bin2hex(file_get_contents($url, false, null, 0, 20)), PHP_EOL;echo bin2hex(file_get_contents($url . 'inc.php', false, null, 0, 20));
efbbbfefbbbfefbbbf3c21444f43545950452048
efbbbfefbbbf
訪問你的 index.php,返回了 3 個 bom
訪問你的 inc.php,返回了 2個 bom
顯然你的 index.php、inc.php 以及在 inc.php 中 include 的一個檔案中 有 bom
你是怎麼執行你的 去除bom程式 的?
還是只放上去了沒有執行?
我執行bom程式,頁面沒有顯示找index.php檔案的bom記錄,難道bom程式沒有執行index.php嗎?
$url = 'http://www.25mj.com/';echo bin2hex(file_get_contents($url, false, null, 0, 20)), PHP_EOL;echo bin2hex(file_get_contents($url . 'inc.php', false, null, 0, 20));
efbbbfefbbbfefbbbf3c21444f43545950452048
efbbbfefbbbf
訪問你的 index.php,返回了 3 個 bom
訪問你的 inc.php,返回了 2個 bom
顯然你的 index.php、inc.php 以及在 inc.php 中 include 的一個檔案中 有 bom
你是怎麼執行你的 去除bom程式 的?
還是只放上去了沒有執行?
目前運行index.php顯示是這樣的
你的程式是怎麼放到伺服器上去的?
你不能在本地處理好以後再上傳嗎?
$url = 'http://www.25mj.com/';echo bin2hex(file_get_contents($url, false, null, 0, 20)), PHP_EOL;echo bin2hex(file_get_contents($url . 'inc.php', false, null, 0, 20));
efbbbfefbbbfefbbbf3c21444f43545950452048
efbbbfefbbbf
訪問你的 index.php,返回了 3 個 bom
訪問你的 inc.php,返回了 2個 bom
顯然你的 index.php、inc.php 以及在 inc.php 中 include 的一個檔案中 有 bom
你是怎麼執行你的 去除bom程式 的?
還是只放上去了沒有執行?
這裡顯示已找到bom,並已清除,但是運行index.php還是有bom。
運行結果如樓上所示。
你的程式是怎麼放到伺服器上去的?
你不能在本地處理好以後再上傳嗎?
我的程式就是在伺服器上改的,我的bom程式也是我ftp傳上去的,然後http://www.25mj.com/delete_bom.php運行。
$url = 'http://www.25mj.com/';
echo bin2hex(file_get_contents($url . 'index.php')), PHP_EOL;
可以見到 3 個 bom
但是你的 http://www.25mj.com/delete_bom.php 的報告中並沒有這個檔案!報告中的 index.php 都在子目錄中
你把 delete_bom.php 中的 rewrite 函數改成這樣:
function rewrite ($filename, $data) { if($filenum = fopen($filename, "w")) { if(flock($filenum, LOCK_EX)) { if(! fwrite($filenum, $data)) echo "$filename 寫入失敗
"; }else echo "$filename 鎖定失敗
"; fclose($filenum); }else echo "$filename 開啟失敗
"; }看看是否是沒有改寫成功
你把 delete_bom.php 中的 rewrite 函數改成這樣:
function rewrite ($filename, $data) { if($filenum = fopen($filename, "w")) { if(flock($filenum, LOCK_EX)) { if(! fwrite($filenum, $data)) echo "$filename 寫入失敗
"; }else echo "$filename 鎖定失敗
"; fclose($filenum); }else echo "$filename 開啟失敗
"; }看看是否是沒有改寫成功
我改成這個之後運行bom,就顯示
這樣,bom還在。
這就對了!檔案都打不開,怎麼去掉 bom 頭?
你把那些打不開的檔案下載下來,改好後重新傳上去
這就對了!檔案都打不開,怎麼去掉 bom 頭?
你把那些打不開的檔案下載下來,改好後重新傳上去
奧,怪不得了
這就對了!檔案都打不開,怎麼去掉 bom 頭?
你把那些打不開的檔案下載下來,改好後重新傳上去
這是為什麼呢?難道我在伺服器上的許可權還不夠?
檔案是唯讀,就是這樣
你的檔案不僅是在網站管理下,還在 ftp 管理下。這種情況是經常發生的
寫入權限實際是由 ftp 控制的,你可嘗試用 ftp 用戶端修改檔案許可權
寫入權限實際是由 ftp 控制的,你可嘗試用 ftp 用戶端修改檔案許可權
懂了,謝謝了,終於解決了。