[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「帶BOM 的UTF-8」和「無BOM 的UTF-8」有什麼區別
UTF-8不需要BOM來表明位元組順序,但可以用BOM來表明編碼方式。字元"ZERO WIDTH NO-BREAK SPACE"的UTF-8編碼是EF BB BF。所以如果接收者收到以EF BB...
- 2這些是什麼? BOM/UFT-8有簽章/withBOM/withoutBOM - iT 邦幫忙
這是另一篇關於BOM之亂的描述. Windows 作業系統不少程式(像是記事本),預設會對UTF-8 檔案加上BOM 而Linux 則避免妨礙到像是解譯器腳本而不加BOM,對於沒有預期要 ...
- 3「带BOM 的UTF-8」和「无BOM 的UTF-8」有什么区别?网页 ...
UTF-8 不需要BOM,尽管Unicode 标准允许在UTF-8 中使用BOM。 所以不含BOM 的UTF-8 才是标准形式,在UTF-8 文件中放置BOM 主要是微软的习惯(顺便提一下:把带...
- 4UTF-8与UTF-8 BOM - bijian1013 - 博客园
在我们通常使用的windows系统中,我发现了一个有趣的现象。我新建一个空的文本文档,点击文件-另存为-编码选择UTF-8,然后保存。
- 5What's the difference between UTF-8 and UTF-8 with BOM?
The UTF-8 BOM is a sequence of bytes at the start of a text stream ( 0xEF, 0xBB, 0xBF ) that allo...