Неверная кодировка имен каталогов

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Ответить
winhex
Сообщения: 223
ОС: Debian

Неверная кодировка имен каталогов

Сообщение winhex »

Да, эта тема вроде бы обсуждалась много раз, но изменить кодировку имен каталогов из CP1251 в UTF-8 не получается не одним известным мне способом. Делал так:

Код: Выделить всё

convmv -f CP1251 -t UTF-8 * -r --notest

при этом имена файлов замечательно преобразуются. Имена каталогов как были в виде вопросов, так и остались. Чем можно решить эту проблему?
Спасибо сказали:
winhex
Сообщения: 223
ОС: Debian

Re: Неверная кодировка имен каталогов

Сообщение winhex »

Поправка: скопировал каталог на другую машину, на ней эта команда преобразовала и имена каталогов и файлов корректно. Дело в локалях?

Код: Выделить всё

locale
LANG=en_US.UTF-8
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Неверная кодировка имен каталогов

Сообщение sash-kan »

winhex писал(а):
01.06.2011 12:36
Дело в локалях?
да.
наглядно:

Код: Выделить всё

$ ls /tmp/12345*
/tmp/12345файл

/tmp/12345каталог:
$ locale
LANG=en_US.utf8
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=
$ LC_ALL=C ls /tmp/12345*
/tmp/12345????????

/tmp/12345??????????????:
$ LC_ALL=C locale
LANG=en_US.utf8
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C

p.s. прозреваю работу под учётной записью root.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
winhex
Сообщения: 223
ОС: Debian

Re: Неверная кодировка имен каталогов

Сообщение winhex »

sash-kan, это я уже понял, теперь все выглядит так:

Код: Выделить всё

locale
LANG=ru_RU.UTF-8
LC_CTYPE=ru_RU.utf8
LC_NUMERIC=ru_RU.utf8
LC_TIME=ru_RU.utf8
LC_COLLATE=ru_RU.utf8
LC_MONETARY=ru_RU.utf8
LC_MESSAGES=ru_RU.utf8
LC_PAPER=ru_RU.utf8
LC_NAME=ru_RU.utf8
LC_ADDRESS=ru_RU.utf8
LC_TELEPHONE=ru_RU.utf8
LC_MEASUREMENT=ru_RU.utf8
LC_IDENTIFICATION=ru_RU.utf8
LC_ALL=

но ничего не изменилось.

p.s. прозреваю работу под учётной записью root.

да, владелец файлов root, под ним это и делается.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Неверная кодировка имен каталогов

Сообщение sash-kan »

winhex писал(а):
01.06.2011 15:50
но ничего не изменилось.
так переконвертируйте.
а лучше сначала проверьте.
$ ls * | iconv -f cp1251
должно быть читабельно.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
winhex
Сообщения: 223
ОС: Debian

Re: Неверная кодировка имен каталогов

Сообщение winhex »

sash-kan, пробовал, те же знаки вопроса в имени папок. Может там имена каталогов в другой кодировке??? :wacko:
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU
Контактная информация:

Re: Неверная кодировка имен каталогов

Сообщение sash-kan »

скорее там действительно знаки вопроса. проверьте. вот иллюстрация:

Код: Выделить всё

$ ls file*
file???
$ ls file* | hd
00000000  66 69 6c 65 3f 3f 3f 0a                           |file???.|
00000008
$
3f — это и есть код символа "?".
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Ответить