我正在搜索(但没有成功)一个脚本,它可以作为批处理文件使用,如果没有 BOM,我可以在它前面添加一个带有 BOM 的 UTF-8 文本文件。
它所用的语言(perl、python、c、bash)和它运行的操作系统对我来说都不重要。我可以使用各种计算机。
我发现有很多脚本可以做相反的事情(去除 BOM),这在我看来有点傻,因为如果没有 BOM,许多 Windows 程序将无法读取 UTF-8 文本文件。
我错过了显而易见的事情吗?
谢谢!
最佳答案
我使用 'file' 命令和 ICU 's 'uconv' 命令编写了这个 addbom.sh。
#!/bin/sh
if [ $# -eq 0 ]
then
echo usage $0 files ...
exit 1
fi
for file in "$@"
do
echo "# Processing: $file" 1>&2
if [ ! -f "$file" ]
then
echo Not a file: "$file" 1>&2
exit 1
fi
TYPE=`file - < "$file" | cut -d: -f2`
if echo "$TYPE" | grep -q '(with BOM)'
then
echo "# $file already has BOM, skipping." 1>&2
else
( mv "${file}" "${file}"~ && uconv -f utf-8 -t utf-8 --add-signature < "${file}~" > "${file}" ) || ( echo Error processing "$file" 1>&2 ; exit 1)
fi
done
编辑: 在
mv
参数周围添加引号。感谢@DirkR,很高兴这个脚本很有帮助!关于utf-8 - 将 BOM 添加到 UTF-8 文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3127436/