[PHP] 無痛遠離UTF-8 BOM - 工程的日子每天都很師
文章推薦指數: 80 %
(圖片來源) 某次我利用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("
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個中文字元)
請輸入左方認證碼:
看不懂,換張圖
請輸入驗證碼
送出留言
延伸文章資訊
- 1[PHP] 無痛遠離UTF-8 BOM - 工程的日子每天都很師
(圖片來源) 某次我利用php Curl 來呼叫WordPress API ,透過php strlen function 查看回傳的123 字串長度,印出在網頁上時卻顯示有8個字元,打.
- 2utf 8與utf 8無BOM的區別 - w3c菜鳥教程
utf-8(8-bit unicode transformation format)是一種針對unicode的可變長度字元編碼,又稱萬國碼。 bom—byte order mark,位元組序標記.
- 3這些是什麼? BOM/UFT-8有簽章/withBOM/withoutBOM - iT 邦幫忙
這是另一篇關於BOM之亂的描述. Windows 作業系統不少程式(像是記事本),預設會對UTF-8 檔案加上BOM 而Linux 則避免妨礙到像是解譯器腳本而不加BOM,對於沒有預期要 ...
- 4UTF8文件帶BOM引起的問題 - 台部落
UTF-8 不需要BOM,儘管Unicode 標準允許在UTF-8 中使用BOM。 所以不含BOM 的UTF-8 纔是標準形式,在UTF-8 文件中放置BOM 主要是微軟的習慣(順便提 ...
- 5位元組順序記號 - 维基百科
位元組順序記號(英語:byte-order mark,BOM)是位於碼點 U+FEFF 的統一碼字符的名称。當以UTF-16或UTF-32來將UCS/統一碼字符所組成的字串編碼時,這個字符被用來...