如何正确地将阿拉伯语字幕转换为utf8?

如何正确地将阿拉伯语字幕转换为utf8?

大多数 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-6Arabic 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

相关内容