gh-pages 正在 mobibaking 一个文本文件。. . 我们的 CI 构建服务器将一些构建工件复制到 gh-pages。
在本地,我可以看到文件编码是 UTF-8,如果我下载文件并打开它,它在文本编辑器中呈现得很好。
但是,在 Safari、Firefox 和 Chrome 中,特殊字符(勾号、复选标记等)正在被 mojibaked。如何指示使用正确的文件编码?
gh-pages 正在 mobibaking 一个文本文件。. . 我们的 CI 构建服务器将一些构建工件复制到 gh-pages。
在本地,我可以看到文件编码是 UTF-8,如果我下载文件并打开它,它在文本编辑器中呈现得很好。
但是,在 Safari、Firefox 和 Chrome 中,特殊字符(勾号、复选标记等)正在被 mojibaked。如何指示使用正确的文件编码?
在没有得到指示的情况下,浏览器无法知道对纯文本文件使用什么文件编码。设置 .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