Command-Line
如何從 UTF-8 文件中刪除 BOM?
我有一個帶有 BOM 的 UTF-8 編碼文件,並且想要刪除 BOM。是否有任何 linux 命令行工具可以從文件中刪除 BOM?
$ file test.xml test.xml: XML 1.0 document, UTF-8 Unicode (with BOM) text, with very long lines
如果您不確定該文件是否包含 UTF-8 BOM,那麼(假設 GNU 實現
sed
)將刪除該 BOM(如果存在),或者不進行任何更改。sed '1s/^\xEF\xBB\xBF//' < orig.txt > new.txt
您還可以使用以下
-i
選項覆蓋現有文件:sed -i '1s/^\xEF\xBB\xBF//' orig.txt
如果您使用的是 BSD 版本
sed
(例如 macOS),那麼您需要讓 bash 進行轉義:sed $'1s/\xef\xbb\xbf//' < orig.txt > new.txt
BOM 在 UTF-8 中沒有意義。這些通常是由 Microsoft 作業系統上的偽造軟體錯誤添加的。
dos2unix
將刪除它並處理 Windows 文本文件的其他特性。dos2unix test.xml