廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 3232 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
Qoo 手機 會員卡
數位造型
個人文章 個人相簿 個人日記 個人地圖
頭銜:超人超人

級別: 副版主 該用戶目前不上站
版區: 星僑五術軟體
推文 x22 鮮花 x126
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[PHP][教學] UTF-8 格式編輯程式網頁注意事項 (BOM 的困擾)
什麼是 BOM (Byte-Order Mark)?
--------------------
在一些平台上,是把代表數值較大的 byte 放在前面,這稱為 Big Endian (BE) 的系統;有些平台則相反,是把代表數值較小的 byte 放在前面,稱為 Little Endian (LE) 的系統。

若採 LE 方式編碼,BOM 會表示為 0xFF 0xFE,而在 Unicode 的定義中是不存在 U+FFFE 這個字元的.

若採 BE 方式編碼,BOM 會表示為 0xFE 0xFF,而 U+FEFF 剛好是在 Unicode 中的有效字元,代表的是一個不佔空間的 space 符號,所以即使沒被解釋為 BOM,也不會對閱覽者產生錯誤的訊息.
--------------------

如何移除? (使用 PHP)
引用 http://www.bo-blog.com/index.php?job..._20040805_214712
-------------------
BOM信息是文件開頭的一串隱藏的字符,用於讓某些編輯器識別這是個UTF-8編碼的文件。但PHP在讀取文件時會把這些字符讀出,從而形成了文件開頭含有一些無法識別的字符的問題。
要檢測一個UTF-8文件是否含有BOM信息,就是檢測文件開頭的字三個符,是否為0xEF, 0xBB, 0xBF。

下方有個小程式,使用者可以搜尋某個目錄下所有文件,並檢測是否加了BOM。

本文轉載自 http://www.hoyo.idv.tw/hoyoweb/document/vi...r=hoyo&status=view

複製程式
//此文件用於快速測試UTF8編碼的文件是不是加了BOM,並可自動移除
//By Bob Shen

$basedir="."; //修改此行為需要檢測的目錄,點表示當前目錄
$auto=1; //是否自動移除發現的BOM信息。1為是,0為否。

//以下不用改动

if ($dh = opendir($basedir)) {
while (($file = readdir($dh)) !== false) {
if ($file!='.' && $file!='..' && !is_dir($basedir."/".$file)) echo "filename: $file ".checkBOM("$basedir/$file")."
";
}
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);
}
?>



獻花 x0 回到頂端 [樓 主] From:臺灣新世紀資通股份有限公司 | Posted:2007-02-26 09:31 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.030801 second(s),query:15 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言