Вопрос или проблема
Существует ли список символов, которые не разрешены в именах файлов и путях в OS X?
?
разрешен.
Только 0x00
(NUL
) и :
запрещены для HFS+.
:
, однако, заменяется в программном обеспечении на основе POSIX на /
:
Спасибо Грэму Ли, который поправил меня в этом!
Как сказал Дэниел Бек, 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̊
Ответ или решение
На операционных системах macOS (OS X) существуют определённые символы, которые запрещены при создании имён файлов и путей. Понимание этих ограничений важно для обеспечения совместимости и избежания проблем с доступом к данным. В этой статье мы рассмотрим символы, запрещённые в именах файлов и путях в macOS, включая нюансы, связанные с кодировками и форматом данных, а также ошибки, которые могут возникнуть из-за некорректного использования.
Запрещенные символы
-
NUL (0x00): Этот символ обозначает конец строки в C и не может быть использован в именах файлов. Попытка создания файла с таким символом приведёт к ошибке.
-
Colon (:): В формате HFS+ двоеточие запрещено в именах файлов. Оно используется системой для определения структуры каталогов. В контексте POSIX, двоеточие ведет себя как эквивалент символа
/
, который также запрещен. -
Конкретные символы:
- Символы возврата каретки (Carriage Return, \r)
- Символы перевода строки (Line Feed, \n)
-
UTF-8 ограничения: Несмотря на то, что многие символы Unicode допускаются, в HFS+ есть особые правила, связанные с кодировкой UTF-8. Например, композиционные символы должны быть представлены в декомпозированном виде и в каноническом порядке. Это значит, что символы, такие как акценты, должны быть записаны как базовая буква плюс комбинирующий значок, содержащий соответствующий акцент.
Специфика HFS+
-
Система HFS+ требует, чтобы имена файлов хранились в кодировке UTF-8 и в декомпозированном виде. Это значит, что любые символы, которые не являются корректными по стандарту UTF-8 или неправильно декомпозированы, будут считаться запрещенными.
-
С точки зрения кодовых точек Unicode, некоторые символы могут привести к ошибкам, когда они неправильно обрабатываются в других операционных системах, таких как Linux или Windows, и могут быть созданы некорректно.
Рекомендации
При работе с файловыми системами macOS и создании имён файлов следует придерживаться следующих рекомендаций:
- Избегайте использования символов NUL и
:
в именах файлов. - Используйте стандартные символы ASCII в именах, чтобы предотвратить случайные ошибки.
- Если нужно использовать акценты или специальные символы, применяйте декомпозированные формы.
- Будьте осторожны при передаче файлов между разными операционными системами, так как это может создать проблемы с именами файлов.
Заключение
Знание символов, запрещённых в именах файлов в macOS, поможет избежать потенциальных проблем, связанных с доступом и совместимостью файлов. Соблюдение этих простых правил и рекомендаций значительно упростит взаимодействие с файлами на различных платформах и обеспечит корректную работу приложений.
Таким образом, понимание ограничений и правил по именованию файлов — это залог успешной работы в экосистеме macOS, что особенно важно для IT-специалистов, работающих с многоплатформенными проектами.