BASH Programming - Введение


Использование символов национального алфавита в именах файлов


Заметка: Данная секция этого 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. Список доступных кодировок можно получить, запустив




Начало  Назад  Вперед



Книжный магазин