大多数 DVD 刻录机(如果不是全部)都要求字幕以 utf8 编码,当然这很容易
for file in *.srt; do
◀ iconv -f ISO-8859-1 -t UTF-8 -o "$file".utf "$file" && mv "$file".utf "$file"
◀ done
就是这样,但是现在阿拉伯语字幕根本不是阿拉伯语,不是所有的字幕都是ISO-8859
,有些是ISO-8859-6
(Arabic windows CP1256
我不知道每个文件的编码是什么,要么是这个,要么是那个,不能一一检查,这将花费一生的时间)
我如何才能将它们转换为 utf8 格式,同时仍保留可读的字幕?我发现很少有 Windows 软件声称可以做到这一点。Linux 呢?我不太关心它是软件还是 bash 脚本
答案1
使用经典的 unix/linux 方式并将一些简单的工具组合在一起,例如
#!/bin/sh
ls *.srt | while read file ; do
charset=`file -bi $file | sed 's/.*charset=//'`
echo '###' $file $charset
case "$charset" in
us-ascii) charset="";; # no conversion needed
utf-8) charset="";; # no conversion needed
binary) charset="";; # no charset detected
*) ;;
esac
if [ "$charset" != "" ] ; then
iconv -f "$charset" -t UTF-8 -o "$file".utf "$file" && mv "$file".utf "$file"
fi
done
首先测试无线自动检测的正确性iconv
。
我建议使用case
将转换限制为几个明确列出的字符集。
字符集自动检测的其他方法请参见 https://superuser.com/questions/301552/how-to-auto-detect-text-file-encoding