[PHP] 無痛遠離UTF-8 BOM - 工程的日子每天都很師

文章推薦指數: 80 %
投票人數:10人

(圖片來源) 某次我利用php Curl 來呼叫WordPress API ,透過php strlen function 查看回傳的123 字串長度,印出在網頁上時卻顯示有8個字元,打. 關閉廣告 工程的日子每天都很師 跳到主文 正因為瞭解一無所有,才紀錄所學幫助後人。

部落格全站分類:數位生活 相簿 部落格 留言 名片 Mar27Wed201921:17 [PHP]無痛遠離UTF-8BOM (圖片來源)   某次我利用phpCurl來呼叫WordPressAPI,透過phpstrlenfunction查看回傳的 123字串長度,印出在網頁上時卻顯示有8個字元,打開Chrome開發者工具查看元素才發現回傳的值包含的字串,這令我相當的困惑,如下圖:   google搜尋“php"後發現其實還蠻多人有遇到一樣的問題!會有這樣的問題發生,是因為網站專案中有使用到UTF8含BOM編碼的檔案,那究竟什麼是BOM呢?BOM的全名為 ByteOrderMark,詳細的說明可以自己去瞭解,這篇文章主要的目的是在如何解決因BOM 而產生的問題。

  解決方案: Notepad++ 找到該檔案並用Notepad++開啟 點擊encoding並改成UTF-8的編碼 phpcode 新增removeBOM.php檔案 輸入檢查BOM的網址   一、 Notepad++ 在網路上找到最常見的解法就是將該檔案利用Notepad++編輯器來進行編碼的轉換,轉換方式如下: 1.找到該檔案並用Notepad++開啟 2.點擊encoding並改成UTF-8的編碼 看起來好像沒什麼大不了,是個很容易解決的問題,但當你依照網路上的解法來解決的時候馬上就會遇到一個非常大的問題,那就是到底是哪個檔案為UTF8BOM編碼?尤其是當你使用的是一個框架,幾乎沒什麼人分享到底該如何找到有該編碼的檔案,此時你可以參考第二個方案來解決問題!   二、phpcode 1新增removeBOM.php檔案 首先在網站根目錄新增removeBOM.php檔案,並將下方的程式碼填入其中: "; }else{ $dirname=$basedir."/".$file; checkdir($dirname); } } } closedir($dh); } } /** *[checkBOM檢查檔案BOM] *@param[type]$filename[description] *@return[type] *@date2017-10-29T19:01:19+0800 */ functioncheckBOM($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("BOMfound,automaticallyremoved."); }else{ return("BOMfound."); } } elsereturn("BOMNotFound."); } /** *[rewrite移除檔頭BOM] *@param[type]$filename[description] *@param[type]$data[description] *@return[type] *@date2017-10-29T19:01:40+0800 */ functionrewrite($filename,$data) { $filenum=fopen($filename,"w"); flock($filenum,LOCK_EX); fwrite($filenum,$data); fclose($filenum); } ?>   2.輸入檢查BOM的網址 輸入下方網址,dirname可以填入需要檢查的資料夾,若不帶dir參數則是整個專案的檔案都會進行檢查。

http://domain/removeBOM.php?dir={dirname}   輸入網址後網頁會開始列出所有檔案檢查的狀態,若有檢查到檔案有UTF8BOM編碼會特別以紅字來顯示,並且會自動移除檔頭BOM,有了這個功能就不用煩惱找不到檔案了呢!   參考資料: php中隐形字符65279(utf-8的BOM头)问题    文章標籤 bom notepad php 65279 utf8 全站熱搜 創作者介紹 Mayuge 工程的日子每天都很師 Mayuge發表在痞客邦留言(0)人氣() E-mail轉寄 全站分類:進修深造個人分類:PHP此分類上一篇:[WordPress]文章編輯自定義欄位 上一篇:[Python]串接GoogleSheetAPI 下一篇:[Mysql]提高效能,從querylog開始 歷史上的今天 2018:[PHP]Wordpress客製頁面模板 2018:[Chrome]ErrorparsingheaderX-XSS-Protection ▲top 留言列表 發表留言 文章分類 生活經歷(1) 購物(1) 網站開發(3) 網站架設(2)網站維護(2)Git(1) 程式語言(6) 開發工具(2)PHP(32)Python(4)CSS(0)JavaScript(0)GoogleScript(1) 資料庫(1) Mysql(1) 作業系統(2) Linux(2)Windows(1) 電腦相關(2) USB(1)軟體應用(7) 協作平台(1) GoogleSite(15) 未分類文章(1) 最新文章 熱門文章 誰來我家 參觀人氣 本日人氣: 累積人氣: QRCode 贊助商連結 贊助商連結 回到頁首 回到主文 免費註冊 客服中心 痞客邦首頁 ©2003-2022PIXNET 關閉視窗 PIXNET Facebook Yahoo! Google MSN {{guestName}} (登出) 您尚未登入,將以訪客身份留言。

亦可以上方服務帳號登入留言 請輸入暱稱(最多顯示6個中文字元) 請輸入標題(最多顯示9個中文字元) 請輸入內容(最多140個中文字元) 請輸入左方認證碼: 看不懂,換張圖 請輸入驗證碼 送出留言



請為這篇文章評分?