在webserver上设置* .txt文件的文件编码属性

时间:2013-12-20 06:28:00

标签: webserver mojibake file-encodings github-pages

gh-pages正在调动文本文件。 。 。我们的CI构建服务器将一些构建工件复制到gh页面。

在本地,我可以看到文件编码是UTF-8,如果我下载文件并打开它,它在文本编辑器中渲染就好了。

然而,在Safari,Firefox和Chrome中,特殊字符(刻度线,复选标记等)正在变得模糊不清。如何指示使用正确的文件编码?

1 个答案:

答案 0 :(得分:1)

没有指示,浏览器就无法知道用于纯文本文件的文件编码。设置.htaccess可以提供帮助,但是依赖于Web服务器。更便携的方法是确保文本文件以UTF8字节顺序标记(BOM)开头。一种方法如下:

#!/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