Резюме:
- Windows: все что угодно, кроме управляющих символов ASCII и
\/:*?"<>| - Linux, OS-X: все, кроме нуля или
/
На всех платформах лучше избегать непечатных символов, таких как управляющие символы ASCII.
Windows
В Windows проводник Windows не допускает управляющие символы или \/:*?"<>|вы можете использовать пробелы. Если вы используете пробелы, вам часто придется заключать в кавычки имя файла при использовании из командной строки (но насколько я знаю, приложения с графическим интерфейсом не затрагиваются). Файловая система Windows, такая как NTFS, очевидно, хранит кодировку с именем файла, но UTF-16 является стандартным.
Некоторые части Windows чувствительны к регистру, другие - без учета регистра. В файловой системе Windows NTFS легко создавать отдельные имена файлов, такие как «Ab» и «ab». Эти имена относятся к отдельным файлам, которые содержат отдельный отдельный контент. Тем не менее, хотя в командной строке Windows будут успешно перечислены оба файла с помощью dir, вы не можете легко получить доступ или манипулировать одним из них с помощью таких команд, как type. Увидеть ниже.
Linux, OS-X
В Linux и OS-X /запрещено только печатный набор ASCII. Некоторые символы (например, метасимволы оболочки *?!) вызовут проблемы в командной строке и потребуют, чтобы имя файла было соответствующим образом заключено в кавычки или экранировано.
Файловые системы Linux, такие как ext2, ext3, не зависят от набора символов (я думаю, они просто более или менее воспринимают его как поток байтов - только нули и /запрещены). Это означает, что вы можете хранить имена файлов в кодировке UTF-8. Я считаю, что это зависит от оболочки или другого приложения, чтобы знать, какую кодировку использовать для правильного преобразования имени файла для отображения или обработки.
Заключение
Таким образом, вы могли бы безопасно использовать что-то вроде ✣(если бы не было так сложно набрать)
Чувствительность к регистру (в) в Windows
C> dir /B Ab aB аB C> type Ab b b C> type aB b b C> type аB unicode homograph
Обратите внимание, что мы не можем набрать содержимое второго файла, команда Windows typeпросто возвращает содержимое Ab. Третий файл также будет отличаться от aB в Linux.
(Windows 10 NTFS).
... на Unix, Windows, Amiga 1000?