UTF-8 的 BOM 檔頭

更新 發佈閱讀 3 分鐘

UTF-8 萬國碼在規格定義時,有建議在文件的開始處,加入位元組順序記號 (BOM, byte-order mark)。但 Plain Text 文件,就是全部都是文字,將它加入檔頭標記,就不是純文字檔案了,所以一般都沒有實作成有 BOM 檔頭的檔案。

以這支 PHP 程式為例:

<?php

echo 'Aha.......'.PHP_EOL;

?>

若存成 BOM,在 Binary (或 Hex) 格式時,會出現 0xEF 0xBB 0xBF 三個 Bytes 的檔頭。如下圖:

raw-image

一般是存成沒有 BOM 檔頭的檔案,如下圖:

raw-image

解法一:存成有/無 BOM 的格式

一些編輯器 (諸如 UltraEdit, Visual Studio) 內定存檔是一般無 BOM 格式,但可以在存檔時,指定要存成 BOM 格式。如下面二張圖:

raw-image
raw-image

解法二:改設定讓程式可以判斷 BOM

PHP 直譯器,內定是不能跑有 BOM 檔頭的 PHP script 程式,若一定要跑有 BOM 檔頭的程式,就要改設定,將 php.ini 裡的 zend.multibyte 設成 On

; If enabled, scripts may be written in encodings that are incompatible with
; the scanner. CP936, Big5, CP949 and Shift_JIS are the examples of such
; encodings. To use this feature, mbstring extension must be enabled.
;zend.multibyte = Off
zend.multibyte = On
raw-image

解法三:寫程式去掉所有檔案的 BOM 檔頭


網路上有些文件說明如何用 PHP 程式去掉有 BOM 檔頭的 PHP 程式。但是這樣就比較麻煩了。




留言
avatar-img
留言分享你的想法!
avatar-img
WILSON PENG的沙龍
2會員
26內容數
WILSON PENG的沙龍的其他內容
2023/01/11
要怎麼判斷是奇數還是偶數? 除以 2 有餘數的是奇數,無餘數的是偶數。 有沒有更快的方法?
Thumbnail
2023/01/11
要怎麼判斷是奇數還是偶數? 除以 2 有餘數的是奇數,無餘數的是偶數。 有沒有更快的方法?
Thumbnail
2022/12/07
當使用 Wordpress 架站時,系統至少會有四層漏洞:
Thumbnail
2022/12/07
當使用 Wordpress 架站時,系統至少會有四層漏洞:
Thumbnail
2022/11/22
比較早期的 Ledger 做的是 USB 的實體錢包,接上 PC 可以操作。之後 Ledger Nano X 可以接手機操作。 庫幣科技有限公司發展了用藍芽連手機的卡片型實體錢包:CoolWallet S。目前它與 MyEtherWallet、幣安交易所、火币网和 OKB 有合作聯名款錢包。
Thumbnail
2022/11/22
比較早期的 Ledger 做的是 USB 的實體錢包,接上 PC 可以操作。之後 Ledger Nano X 可以接手機操作。 庫幣科技有限公司發展了用藍芽連手機的卡片型實體錢包:CoolWallet S。目前它與 MyEtherWallet、幣安交易所、火币网和 OKB 有合作聯名款錢包。
Thumbnail
看更多
你可能也想看
Thumbnail
在本節中,我們介紹了PHP的基本語法,包括如何在HTML中嵌入PHP代碼,PHP腳本的執行順序,以及多種註解方式。我們還學習了如何定義和使用變數,包括單個變數和多個變數的賦值方法。這些基礎知識將幫助你開始使用PHP進行Web開發。
Thumbnail
在本節中,我們介紹了PHP的基本語法,包括如何在HTML中嵌入PHP代碼,PHP腳本的執行順序,以及多種註解方式。我們還學習了如何定義和使用變數,包括單個變數和多個變數的賦值方法。這些基礎知識將幫助你開始使用PHP進行Web開發。
Thumbnail
本篇文章講解了字符編碼的基礎知識,包括ASCII, Unicode 和 UTF-8的誕生背景、解決的問題以及轉換方式。瞭解這些知識有助於解決在讀檔案時用錯誤的編碼方式轉換就會出現亂碼等問題。文章內容涉及電腦技術中的字符編碼相關歷史緣由,可幫助讀者解決相關疑問。
Thumbnail
本篇文章講解了字符編碼的基礎知識,包括ASCII, Unicode 和 UTF-8的誕生背景、解決的問題以及轉換方式。瞭解這些知識有助於解決在讀檔案時用錯誤的編碼方式轉換就會出現亂碼等問題。文章內容涉及電腦技術中的字符編碼相關歷史緣由,可幫助讀者解決相關疑問。
Thumbnail
UTF-8 萬國碼在規格定義時,有建議在文件的開始處,加入位元組順序記號 (BOM, byte-order mark)。但 Plain Text 文件,就是全部都是文字,將它加入檔頭標記,就不是純文字檔案了,所以一般都沒有實作成有 BOM 檔頭的檔案。
Thumbnail
UTF-8 萬國碼在規格定義時,有建議在文件的開始處,加入位元組順序記號 (BOM, byte-order mark)。但 Plain Text 文件,就是全部都是文字,將它加入檔頭標記,就不是純文字檔案了,所以一般都沒有實作成有 BOM 檔頭的檔案。
Thumbnail
要計算字串的 MD5 checksum,在 Shell 下用這樣的指令應該就可以了 但是,它怎麼跟 PHP 的 md5 函數算出來的不同!! 雖然是不同的程式語言,但同樣的字串,用同樣的演算法,應該都相同呀!
Thumbnail
要計算字串的 MD5 checksum,在 Shell 下用這樣的指令應該就可以了 但是,它怎麼跟 PHP 的 md5 函數算出來的不同!! 雖然是不同的程式語言,但同樣的字串,用同樣的演算法,應該都相同呀!
Thumbnail
常常會遇到好不容易寫好程式,但是輸出的時候沒辦法按照自己想要的格式,或是間隔來輸出,這時需要用到的就是格式化輸出,格式化輸出就是調整排版的一個形式。
Thumbnail
常常會遇到好不容易寫好程式,但是輸出的時候沒辦法按照自己想要的格式,或是間隔來輸出,這時需要用到的就是格式化輸出,格式化輸出就是調整排版的一個形式。
Thumbnail
一個網頁只會有一個h1 標籤(h1.p.img)裡面可以放多個屬性(src.background.color) 建立 HTML 環境 告訴大家這是html5的語法 關於整個專案的資訊放這裡面 頁籤標題 寫給別人看的要放這裡面 Emmet 預設安裝 /*語意使用英文*/ /*使
Thumbnail
一個網頁只會有一個h1 標籤(h1.p.img)裡面可以放多個屬性(src.background.color) 建立 HTML 環境 告訴大家這是html5的語法 關於整個專案的資訊放這裡面 頁籤標題 寫給別人看的要放這裡面 Emmet 預設安裝 /*語意使用英文*/ /*使
Thumbnail
輸入畫面 為什麼要做驗證? 因為作為設計者,永遠不該預設使用者會乖乖照設計者的意思輸入。
Thumbnail
輸入畫面 為什麼要做驗證? 因為作為設計者,永遠不該預設使用者會乖乖照設計者的意思輸入。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News