東莞嘉創網絡致力于企業網站建設、網絡推廣!為客戶創造價值!

萬詞霸屏萬詞霸屏 營銷論壇營銷論壇網站地圖網站地圖

當前位置:主頁 > 知識庫 > 網站設計 >

 非法字符原因以及解決辦法

發表日期:2019-09-26 23:37文章編輯:admin瀏覽次數: 標簽: ? ?

模板文件生成html文件之后會在body開頭處加入一個可見的控制符&#65279,導致頁面頭部會出現一個空白行。原因是頁面的編碼是UTF-8 + BOM。

這種編碼方式一般會在windows操作系統中出現,比如WINDOWS自帶的記事本等軟件,在保存一個以UTF-8編碼的文件時,會在文件開始的地方插入三個不可見的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隱藏的字符,用于讓記事本等編輯器識別這個文件是否以UTF-8編碼。對于一般的文件,這樣并不會產生什么麻煩。但對于 PHP來說,BOM是個大麻煩。因為PHP并不會忽略BOM,所以在讀取、包含或者引用這些文件時,會把BOM作為該文件開頭正文的一部分。根據嵌入式語言的特點,這串字符將被直接執行(顯示)出來。由此造成即使頁面的 top padding 設置為0,也無法讓整個網頁緊貼瀏覽器頂部,因為在html一開頭有這3個隱藏字符&#65279!

直接notopad++ 保存為無dom格式 (格式-》轉為UTF-8 無dom格式) 然而文件比較多,又想偷懶下,使用下列方法來實現。 將一下代碼保存為a.php文件放到根目錄下,執行一下,即可自動完成轉換
 
<?php 
// 設定你要清除BOM的根目錄(會自動掃描所有子目錄和文件)
$HOME = dirname(__FILE__);
// 如果是Windows系統,修改為:$WIN = 1;
$WIN = 0;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>UTF8 BOM 清除器</title>
<style>
body { font-size: 10px; font-family: Arial, Helvetica, sans-serif; background: #FFF; color: #000; }
.FOUND { color: #F30; font-size: 14px; font-weight: bold; }
</style>
</head>
<body>
<?php
$BOMBED = array();
RecursiveFolder($HOME);
echo '<h2>These files had UTF8 BOM, but i cleaned them:</h2><p class="FOUND">';
foreach ($BOMBED as $utf) { echo $utf ."<br />
"; }
echo '</p>';
// 遞歸掃描
function RecursiveFolder($sHOME) {
 global $BOMBED, $WIN;
 $win32 = ($WIN == 1) ? "" : "/";
 $folder = dir($sHOME);
 $foundfolders = array();
 while ($file = $folder->read()) {
  if($file != "." and $file != "..") {
   if(filetype($sHOME . $win32 . $file) == "dir"){
    $foundfolders[count($foundfolders)] = $sHOME . $win32 . $file;
   } else {
    $content = file_get_contents($sHOME . $win32 . $file);
    $BOM = SearchBOM($content);
    if ($BOM) {
     $BOMBED[count($BOMBED)] = $sHOME . $win32 . $file;
     // 移出BOM信息
     $content = substr($content,3);
     // 寫回到原始文件
     file_put_contents($sHOME . $win32 . $file, $content);
    }
   }
  }
 }
 $folder->close();
 if(count($foundfolders) > 0) {
  foreach ($foundfolders as $folder) {
   RecursiveFolder($folder, $win32);
  }
 }
}
// 搜索當前文件是否有BOM
function SearchBOM($string) { 
  if(substr($string,0,3) == pack("CCC",0xef,0xbb,0xbf)) return true;
  return false; 
}
?>
</body>
</html>

相關文章

網頁設計應該關注的64個關鍵點

日期:2019-12-30 瀏覽次數:122

&#65279; 非法字符原因以及解決辦法

日期:2019-09-26 瀏覽次數:120

HTTPS改造全流程常見Q&A

日期:2019-08-02 瀏覽次數:139

什么是ssl證書?有什么優勢?如何選ssl證書?

日期:2019-07-30 瀏覽次數:119

四步輕松搞定網站頁面設計

日期:2019-07-30 瀏覽次數:105

教你免費升級http到https,提升網站安全性

日期:2019-07-16 瀏覽次數:160

PHPstudy Apache停止無法啟動的解決方案

日期:2019-07-13 瀏覽次數:204

百度分享不支持https的解決方案

日期:2019-07-13 瀏覽次數:107

PS2018黑科技:一鍵摳圖,終于不用花大量時間摳圖了!

日期:2019-07-13 瀏覽次數:179

有網站的注意了,你的網站在公安備案了嗎?

日期:2019-07-13 瀏覽次數:151

天天街机千炮捕鱼下载 股票交易平台排行 吉林11选5基本走势图 15选5开奖结果金 约战武汉麻将苹果app下载 重庆幸运农场号码规律 同城游美女捕鱼cdk 东北大坑棋牌 湖北彩票30选5怎么玩 鼎盛团队赚钱是真的吗 红中麻将怎么玩 新手入门怎么玩股票 云南20选8开奖结 打血流麻将高端技巧 湖北11选5五码走势图 四肖三期 大唐斗地主下载