将BOM添加到UTF-8文件

我正在搜索(没有成功)一个脚本,它将作为一个批处理文件工作,并允许我在没有BOM的情况下,使用BOM添加一个UTF-8文本文件。

(Perl,python,c,bash)或者它对我有用的操作系统的语言都没有。我可以使用各种各样的电脑。

我发现很多脚本做了反向(剥离BOM),这对我来说是一种愚蠢的感觉,因为如果没有BOM,许多Windows程序将无法读取UTF-8文本文件。

我有没有想过这个明显的?
谢谢!

我使用’file’命令和ICU的’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,很高兴这个脚本一直很有帮助!

http://stackoverflow.com/questions/3127436/adding-bom-to-utf-8-files

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:将BOM添加到UTF-8文件