我正在搜索(但没有成功)一个脚本,它可以作为批处理文件使用,如果没有 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/

10-13 07:22