Заметка: Данная секция этого HOWTO отсутствует в англоязычном варианте.
Все дополнения и исправления присылайте на адрес переводчика.
Использование имен файлов содержащих символы русского языка под Linux, как и
во многих других вещах осложняется наличием трех кодировок, а также тем, что
иногда программы вообще не содержат поддержки символов национального алфавита.
При использовании русских символов в именах файлов нужно учесть следующие
обстоятельства:
- для обеспечения совместимости записанных дисков с DOS кодировка символов
в ISO9660 должна быть CP866 и имена файлов в формате 8.3 (8 символов - имя,
3 символа - расширение)
- некоторые DOS драйвера CDROM приводов могут не поддерживать не ASCII
символов в именах файлов
- для обеспечения совместимости записанных дисков с Windows необходимо
добавлять расширение JOLIET, которое использует UNICODE кодировку имен файлов.
- некоторые версии UNIX систем не поддерживают JOLIET расширение (Linux
поддерживает при включении соответствующей опции в при сборке ядра) и если
требуется совместимость с ними должно использоваться RockRidge расширение.
Родная файловая система Linux - ext2 не делает никаких предположений о кодировке
символов, она просто хранит имена файлов в 8-битном представлении. Правильность
интерпретации кодировки имени файла зависит от настроек locale программы которая
его создала и программы которая выводит его пользователю. Так как Linux
способен работать со всеми русскими кодировками (cp866, cp1251, koi8-r,
iso8859-5), то вполне возможен случай, когда пользователь создаст файл в
терминале с cp866 настройками, а затем попытается его считать его (возможно
на другом компьютере) в терминале с koi8-r настройками, и будет озадачен.
Текущая версия mkisofs-1.12.1 при составлении имен файлов в ISO9660 заменяет
все не ASCII символы (в том числе и русские) на знак '_'(подчеркивание).
Таким образом без применения патчей к mkisofs невозможно записать диск
совместимый с DOS. Мне пока не удалось отыскать такой патч, если у кого-то
есть положительный опыт записи таких дисков - пришлите мне информацию и
я включу ее сюда.
Универсальный метод - включить оба расширения JOLIET и RockRidge на
записываемый диск, причем RockRidge будет содержать символы в 8 битном
представлении, как и в файловой системе, а для указания кодировки символов
файловой системы при преобразовании в Joliet UNICODE, программа mkisofs
поставляемая в комплекте с cdrecord, начиная с версии cdrecord-1.8.1
содержит опцию -jcharset. Список доступных кодировок можно получить, запустив
mkisofs -jcharset help
В этом списке присутствуют cp866 и koi8-r но (пока?) отсутствует cp1251.
Если Ваша система использует кодировку koi8-r в качестве основной, что обычное
дело под Linux, то команда создания образа диска может быть такой
mkisofs -r -J -jcharset=koi8-r <путь к каталогу с файлами> <путь к образу диска>
Если файлы для создания диска находятся не на разделе с ext2 файловой системой,
то возможно потребуется указать опции codepage и iocharset перед монтированием
файловой системы. Например при монтировании раздела с FAT/VFAT и выбранной
кодировке koi8-r необходимо указать:
mount -o codepage=866,iocharset=koi8-r /dev/hdc1 /mnt/dos
при монтировании NTFS:
mount -o iocharset=koi8-r /dev/hdc2 /mnt/ntfs
Тогда будет осуществляться правильная трансляция имен файлов из файловой
системы в желаемую кодировку.
При монтировании компакт-диска с Joliet расширением для правильной
трансляции имен файлов из UNICODE необходимо также указывать с опцией
iocharset желаемую кодировку для отображения.
mount -o iocharset=koi8-r /dev/cdrom /mnt/cdrom
Вперед
Назад
Содержание