【发布时间】:2015-11-28 23:57:17
【问题描述】:
我正在尝试编写一个脚本,该脚本将自动从文件中删除 UTF-8 BOM。我无法检测文件是否首先有一个。这是我的代码:
function has-bom {
# Test if the file starts with 0xEF, 0xBB, and 0xBF
head -c 3 "$1" | grep -P '\xef\xbb\xbf'
return $?
}
由于某种原因,head 似乎忽略了文件前面的 BOM。例如,运行这个
printf '\xef\xbb\xbf' > file
head -c 3 file
不会打印任何东西。
我尝试在head --help 中寻找可以让我解决此问题的选项,但没有运气。有什么我可以做的吗?
【问题讨论】:
标签: linux bash unix encoding utf-8