Какие символы запрещены в именах файлов OS X?

Вопрос или проблема

Существует ли список символов, которые не разрешены в именах файлов и путях в OS X?

? разрешен.

Только 0x00 (NUL) и : запрещены для HFS+.

:, однако, заменяется в программном обеспечении на основе POSIX на /:

alt text
alt text

Спасибо Грэму Ли, который поправил меня в этом!

Как сказал Дэниел Бек, NUL и : (также / в контексте POSIX) запрещены; однако дело сложнее. Имена файлов HFS+ должны храниться в формате UTF-8, в полностью декомпозированном виде, с составными символами, хранящимися в каноническом порядке tn1150. Таким образом, ответ на ваш вопрос зависит от того, что вы имеете в виду под “символом”:

Если вас интересует последовательность байтов, из которых состоят имена файлов, любая последовательность, которая не является допустимой UTF-8 (или не правильно декомпозирована), запрещена.

Если вы имеете в виду кодовые точки unicode, то правило декомпозиции по-прежнему запрещает любую точку, которая представляет акцентированный символ (она должна храниться вместо этого как базовая буква + комбинирующие акценты) (см. tn1150table.

Согласно википедии, http://en.wikipedia.org/wiki/HFS_Plus любой unicode символ разрешен, включая NUL.

Но многие приложения будут накладывать свои собственные ограничения, такие как / и так далее.

В дополнение к уже упомянутым символам:

  • :
  • /
  • \0

…возврат каретки и перевод строки запрещены:

  • \r
  • \n

На macOS, по крайней мере на файловых системах HFS и exFAT, не поддерживается следующая последовательность символов UTF-16 0x61 (“a”) 0x30a (круглая надстрочная – https://www.compart.com/en/unicode/U+030A), если посмотреть на последовательность байтов в имени файла после обмена байтов на little endian, она выглядит так:

61 00 0a 03

Я предполагаю, что проблема в том, что эта последовательность байтов экранируется в 0xE5 (å), что, похоже, является каким-то универсальным символом бланкировки в macOS.

Если диск не защищен от записи, такие файлы и каталоги мгновенно удаляются. Людям, работающим в правоохранительных органах Скандинавии, вероятно, следует внимательно прочитать это перед отправкой файлов и документов между отделами!

Когда эта проблема началась, неизвестно, но, вероятно, она существует с начала 70-х (вспомните VAX)

Эти файлы и имена каталогов проще всего создавать с помощью компьютеров на базе Linux, FreeBSD или Windows. Просто откройте проводник и создайте документ или каталог с вышеупомянутым символом. Затем подключите портативный диск к компьютеру на macOS и посмотрите, что произойдет.

Для вашего удобства я попытался вставить сломанный символ здесь и некоторые другие примеры этих “умлаутов”, как их называют в немецком:

å b̊ c̊

Screenhot

Ответ или решение

На операционных системах macOS (OS X) существуют определённые символы, которые запрещены при создании имён файлов и путей. Понимание этих ограничений важно для обеспечения совместимости и избежания проблем с доступом к данным. В этой статье мы рассмотрим символы, запрещённые в именах файлов и путях в macOS, включая нюансы, связанные с кодировками и форматом данных, а также ошибки, которые могут возникнуть из-за некорректного использования.

Запрещенные символы

  1. NUL (0x00): Этот символ обозначает конец строки в C и не может быть использован в именах файлов. Попытка создания файла с таким символом приведёт к ошибке.

  2. Colon (:): В формате HFS+ двоеточие запрещено в именах файлов. Оно используется системой для определения структуры каталогов. В контексте POSIX, двоеточие ведет себя как эквивалент символа /, который также запрещен.

  3. Конкретные символы:

    • Символы возврата каретки (Carriage Return, \r)
    • Символы перевода строки (Line Feed, \n)
  4. UTF-8 ограничения: Несмотря на то, что многие символы Unicode допускаются, в HFS+ есть особые правила, связанные с кодировкой UTF-8. Например, композиционные символы должны быть представлены в декомпозированном виде и в каноническом порядке. Это значит, что символы, такие как акценты, должны быть записаны как базовая буква плюс комбинирующий значок, содержащий соответствующий акцент.

Специфика HFS+

  • Система HFS+ требует, чтобы имена файлов хранились в кодировке UTF-8 и в декомпозированном виде. Это значит, что любые символы, которые не являются корректными по стандарту UTF-8 или неправильно декомпозированы, будут считаться запрещенными.

  • С точки зрения кодовых точек Unicode, некоторые символы могут привести к ошибкам, когда они неправильно обрабатываются в других операционных системах, таких как Linux или Windows, и могут быть созданы некорректно.

Рекомендации

При работе с файловыми системами macOS и создании имён файлов следует придерживаться следующих рекомендаций:

  • Избегайте использования символов NUL и : в именах файлов.
  • Используйте стандартные символы ASCII в именах, чтобы предотвратить случайные ошибки.
  • Если нужно использовать акценты или специальные символы, применяйте декомпозированные формы.
  • Будьте осторожны при передаче файлов между разными операционными системами, так как это может создать проблемы с именами файлов.

Заключение

Знание символов, запрещённых в именах файлов в macOS, поможет избежать потенциальных проблем, связанных с доступом и совместимостью файлов. Соблюдение этих простых правил и рекомендаций значительно упростит взаимодействие с файлами на различных платформах и обеспечит корректную работу приложений.

Таким образом, понимание ограничений и правил по именованию файлов — это залог успешной работы в экосистеме macOS, что особенно важно для IT-специалистов, работающих с многоплатформенными проектами.

Оцените материал
Добавить комментарий

Капча загружается...