Как преобразовать арабские подзаголовки в 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-6 и некоторые Arabic windows CP1256 (Я не делаю то, что является кодированием каждого файла, это - или это или что, не может проверить их всех один за другим, потребуется время жизни),

Как я могу преобразовать их в utf8 при тихом наличии читаемых подзаголовков, я видел немногих программное обеспечение для окон, утверждая, что они могут сделать это. Что относительно Linux я действительно не забочусь, является ли это программное обеспечение или сценарий удара

0
задан 16 August 2014 в 00:15

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

1
ответ дан 7 October 2019 в 09:17

Другие вопросы по тегам:

Похожие вопросы: