semenenko88
@semenenko88
Системный администратор

Проблемы в кодировке имени файлов на Ubuntu и Centos, как решить?

Был сервер 1С на Ubuntu14.04, для него по NFS был выделен диск для хранения файлов.
Сервер 1С перевели на Centos7, примонтировали NFS share.
Теперь новые файлы из 1С складываются в NFS share и открываются, а старые файлы не открываются из 1С.
Проверка показала, что новые файлы имеют нечитаемые имена (не в той кодировке), они открываются. А старые файлы имеют имена в utf-8, читаются с Centos, но не открываются в 1С.
И Ubuntu 14.04 имел локаль: LANG=ru_RU.UTF-8 LANGUAGE=ru_RU
И Centos 7 выдает локаль: LANG=ru_RU.UTF-8 LANGUAGE=ru_RU

При этом файлы написанные на латинице открываются и старые и новые.
  • Вопрос задан
  • 2026 просмотров
Пригласить эксперта
Ответы на вопрос 2
@inquisitor273
Для начала нужно определить текущую кодировку имён файлов, для этого понадобится утилита enca. Вот пример:
$ ls -1
????1.txt
????2.jpg
+BDUESQRR-_+BD4ENAQ4BD0-_+BEQEMAQ5BDs-.bin

Просмотреть имена файлов и их кодировку:
$ ls -1 | while read i; do echo "$i: $(echo $i | enca -c): $(echo $i | enca -i)"; done
����1.txt: файл1.txt: CP1251
����2.jpg: файл2.jpg: KOI8-U
+BDUESQRR-_+BD4ENAQ4BD0-_+BEQEMAQ5BDs-.bin: ещё_один_файл.bin: UTF-7


Так можно рекурсивно сменить кодировку имён в текущей директории:
$ find . | while read i; do convmv --notest -f $(echo $i | enca -i) -t utf8 ./$i; done
Ответ написан
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами
Перегоните наименования файлов в нужную кодировку
Чтобы читал в 1С:
convmv -t UTF-8 -f CP1251 somefile
Вместо CP1251 подставьте свою кодировку
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы