DimkaS
написал 15 августа 2006 года в 12:47 (1376 просмотров)
Ведет себя
как мужчина; открыл 84 темы в форуме, оставил 922 комментария на сайте.
Такая проблема: копировал файлы с фата на ext3 под Убунту с локалью utf8. Потом подключил винт с файлами к машине с Дебианом (koi8-r). Все русские имена стали нечитаемы (видно, что 2-х байтовые). Можно ли это исправить и как поступать в случае, когда локали систем отличаются?
Последние комментарии
- OlegL, 17 декабря в 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
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
Эт смотря что ты хочешь. Можно или подстроить файлы под систему — программа convmv конвертирует имена файлов;
или подстроить систему для работы с файлами — конкретному процессу дать LC_ALL=ru_RU.UTF-8.
«Локаль системы» — это миф :-)
Ну, я имел в виду дефолтную.
Т.о. имена скопированных файлов можно исправить с помощью convmv, а в будущем, перед cp делать export LC_ALL=ru_RU.UTF8. Всё правильно понял?
Угу.
Нет, это тебе вряд ли что-то даст. cp все равно будет в точности копировать имена файлов, хоть оно их будет читаь в UTF-8 или KOI8-R. В будущем тоже convmv :)
Мдя… Ну, или дефолтную локаль сменить перед копированием.
Спасибо!
В именах этих файлов есть немецкие буквы с точечками, которые в винде отображаются вполне корректно. С чего бы?
Мож, надо было фат оставить — всё равно доступ через самбу… ??
И еще вопрос: на файлах остался атрибут исполняемости. Если делать chmod рекурсивно, то атрибут снимается и с директорий и их содержимое перестаёт отображаться. Как бы это исправить?
локаль тут не причём. `cp' копирует файлы как есть, не внося никаких изменений в имена. Драйвер ext3, тоже выдаёт имена файлов в том виде, в котором они на диске записаны, нисколько не задумываясь о существовании каких-то там кодировок. А вот драйвер fat умеет перекодировать имена файлов, хотя по дефолту поступает с именами, точно также как и ext3. Надо было просто смонтировать fat с нужными опциями codepage и iocharset, чтобы объяснить драйверу, соответственно, откуда и куда перекодировать.
Т.е. надо было смонтировать фат с iocharset=koi8-r?
Ясно.
По предыдущему: не прокатывает, если в имени файла есть пробел. Надо что-то взять в кавычки. Но что?
Или если хочется с xargs, см. пример в man find.
Ну а я может быть чего то не сращиваю, но вот вот раньше я тоже использовал опцию iochaset=koi8-r при монтировании CD-ROM, тогда все становилось читабельным.
Но вот сейчас после установки Ubuntu 6.06 система автоматически прописала такую строчку для монтирования CD-ROM:
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
При этом все диски с русскими именами (неважно где записанные в Windows или в Линукс и неважно с какой локалью) читаются как положено.
Хм. А что у тебя за локаль? Юникодная?
Нет, всегда пользусь koi8-r и меняю ее на таковую, если встречаю дистрибутив, в котором используется юникодная локаль.
Да правда, хочу заметить, что настроить корректно локаль в Ubuntu, не сказать, что трудно, но достаточно гимморно. Надо ознакомиться с использованием файлов в каталоге /var/lib/locales/supported.d, а также с массой dpkg команд по настройке локали, ну и конечно правильно прописать значения в файл /etc/environment (Многие, почему то считают, что этого достаточно, хотя на самом деле это последний шаг по настроке локали в Ubunty, ну может сейчас уже и в Debian точно также).
странно. драйвер iso9660, ведь не знает ничего про локаль…
А, кстати, где читается? Если в гуе, то, скажем glib, тоже перекодирует имена. По дефолту предполагая, что имена файлов в utf8. Ну а в iso9660, насколько я знаю, именно utf8 и используется.
В mount(8) пишут, что там какой-то 16-битный юникод. Для перекодировки в UTF-8 используется опция utf8.
Везде читается и в консоле в том числе. Ну разумеется я не тестировал со всеми программами. Меня вполне удовлетворяет обычный гуевый браузер (Konqueror и Nautilus) и консоль.
rgo мне уже всё объяснил, но всё равно, спасибо.