anonymous
написал 28 сентября 2005 года в 09:34 (899 просмотров)
Ведет себя
неопределенно; открыл 1814 темы в форуме, оставил 5575 комментариев на сайте.
Стоял у меня сначала Mandrake 10.1 и был у меня отдельный ext3 раздел для /home Насколько я понял все имена файлов хранились в koi8-r
Теперь я поставил FedoraCore4 и хочу также использовать этот раздел для /home. Но оказалось, что русские имена файлов он отображать не хочет(что-то вроде encoding error), потому что ему в utf8 подавай. Так вот, вопрос такой: как сделать, чтобы этот имена в этом разделе воспринимались в кодировке koi8-r? Или как сконвертировать все файлы из /home в правильную кодировку?
Последние комментарии
-
OlegL, 17 декабря 2023 года в 15:00 →
Перекличка
21
-
REDkiy, 8 июня 2023 года в 9:09 →
Как «замокать» файл для юниттеста в Python?
2
-
fhunter, 29 ноября 2022 года в 2:09 →
Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt?
6
-
Иванн, 9 апреля 2022 года в 8:31 →
Ассоциация РАСПО провела первое учредительное собрание
1
-
Kiri11.ADV1, 7 марта 2021 года в 12:01 →
Логи catalina.out в TomCat 9 в формате JSON
1
DevOps as a Service from Palark
24/7 SRE & DevOps service to cover all your Kubernetes needs.

Забыл еще добавить, что параметры монтирования типа codepage и iocharset применяются для монтировании только fat, и вроде для ext3 неприменимы. Читал man mount и ничего по заданию кодировки в ext3 (он же ext2) не нашел
Такая же трабла и рейзером 3.6
т.е. с мандривой(koi8-r) и с live-cd ubuntu(utf8)
у меня где-то скрипт перекодировки валялся…
ага, точно:
#!/bin/bash function recode_recursive () { if [ -d "$1" ]; then echo "entering $1" cd "$1" for i in *; do recode_recursive "$i" done echo "exiting $1" cd .. fi decoded=`echo $1 | iconv -f koi8-r -t utf-8`; if [ $? == 0 ]; then if [[ "$decoded" != "$1" ]]; then echo "$1" '==>' "$decoded" mv "$1" "$decoded" else echo 'Skipping' "$1" fi else echo "ERROR!!!: $1" fi; } recode_recursive .вроде работал. Но вы проверьте на всякий случай, закомментируйте mv и проверьте ;). А то если половина файлов перекодируется, а другая — нет (или ещё лучше не в ту, или не из той кодовой таблицы кодируется), тогда точно ручками придётся всё это делать.
А с другой стороны… для gtk можно переменную окружения объявить, как биш её… что то вроде G_FILENAME_ENCODING. консоль тоже можно в koi8-r рисовать. в общем либо мой скрипт (который так до конца и не был проверен, все баги какие вылезли я пофиксил, но в конце концов всё было перекодировано, а уверенности что он работает всегда не появилось) — либо настройка локали :).
Сработало. Вот только я бы еще сделал защиту от повторного переименования, когда имя уже в кодировке utf-8. Для этого нужно проверять, сконвертированная строка имеет ту же длину что и оригинал. Что-то вроде:
if [[ "$decoded" != "$1" ]] && (strlen($decoded) == strlen($1))…
Правда я не знаю, как это в bash правильно написать.