至於bom是什麼,這裡就不解釋了,百科解釋的很詳細,bom - 位元組順序標記(byteordermark)
簡單來說,bom主要是為了解決linux檔案在windows上亂碼的問題
主要有以下幾個場景:
在linux上生成乙個csv檔案,在excel中開啟,亂碼
在linux生成乙個txt檔案,在windows上用記事本開啟,亂碼
linux上是無視bom的,在linux上生成的檔案也是不帶bom,儘管不帶bom的utf-8才是標準,但是為了能在windows上開啟檔案不亂嗎,我們就需要手動新增bom頭
用法:
# 在report.csv檔案中新增bom頭
printf '\xef\xbb\xbf' > report_new.csv
cat report.csv >> report_new.csv
需要注意的是:windows記事本缺省會給檔案新增bom頭,儘管這幾個字元正常情況肉眼不可見,但是在程式處理這些檔案時,這些字元是能被識別到的,所以經常會出現看似正常的檔案,程式處理卻報錯,以及window上看似正確的指令碼在linux下執行卻報錯。
所以建議使用sublime,而不是windows自帶的記事本來編輯檔案。
Linux下給檔案新增BOM頭
至於bom是什麼,百科解釋的很詳細,bom 位元組順序標記 byteordermark 簡單來說,bom主要是為了解決linux檔案在windows上亂碼的問題 主要有以下幾個場景 在linux上生成乙個csv檔案,在excel中開啟,亂碼 在linux生成乙個txt檔案,在windows上用記事本...
php程式去除檔案 bom頭
header content type text html charset utf 8 if isset get dir else auto 1 設定為1標示檢測bom並去除,設定為0標示只進行bom檢測,不去除 echo 當前查詢的目錄為 basedir.當前的設定是 echo auto?檢測檔案...
什麼是檔案的BOM頭
bom是用來判斷文字檔案是哪一種unicode編碼的標記,其本身是乙個unicode字元 ufeff 位於文字檔案頭部。在不同的unicode編碼中,對應的bom的二進位制位元組如下 fe ff utf16be ff fe utf16le ef bb bf utf8 所以我們可以根據檔案頭部的幾個位...