over 6 years ago

Работая с коллегами, пользующимися альтернативными операционными системами,
:) временами приходится иметь дело с файлами, имена которых повредились после
передачи через Сеть. Моя Debian-система работает на LANG=ru_RU.UTF-8, так
что самая частая головная боль — это кодировка cp1251, тяжёлое наследие Windows98
в России.

К моему личному великому удовольствию, в Debian присутствует утилита, которая
позволяет изменить кодировку имён файлов, которые уже лежат на вашем жёстком
диске. Она называется convmv.

Дополнительно, бывает проблема получить читаемый список файлов на FTP-ресурсах,
где выставлена кодировка, отличающаяся от UTF-8. Для Krusader, которым я пользуюсь
в качестве FTP-менеджера по умолчанию, всё решается элементарным пунктом меню
«Вид» -> «Выбрать кодировку».

convmv to the rescue

Присутствует в репозитариях для squeeze:

# aptitude install convmv

Выполняется достаточно удобно, но, по-моему, контринтуитивно. Удобнее всего
все файлы с повреждёнными именами тем или иным образом собрать в одном каталоге
и из этого каталога вызвать convmv следующим образом:

$ convmv -f cp1251 -t UTF-8 *

В случае, если файлы повредились насмерть, то звёздочка может оказаться единственным
выходом.

По умолчанию convmv не меняет имена файлов после своего запуска — только
пишет результат, который получится при заданных настройках. Как и всегда с
кодировками, надо тыкать почти наугад, пока на экране не появится что-то читаемое.
:) Для того, чтобы изменение произошло, convmv надо будет запустить ещё раз
с флагом --notest:

$ convmv --notest -f cp1251 -t UTF-8 *

При общении с Windows-системами в России самые частые кодировки, которые будут
попадаться, это cp1251, cp866 и koi8-r.

 
comments powered by Disqus