Мне бы очень хотелось использовать в Windows для имен файлов символы типа "?". Я понимаю, почему они зарезервированы, но почему они этого не сделали или смогут ли они когда-нибудь обойти это, используя символы Unicode, которые выглядят одинаково, но (очевидно) имеют разные коды Unicode?
Я думаю, это вполне возможно, но если нет, то почему?
решение1
Я думаю, причина в том, что это может вызвать путаницу. Если у вас есть символ, который выглядит как "?", но имеет другой код Unicode - как вы заметите разницу?
Как бы вы объяснили это кому-нибудь? «В имени файла не может быть вопросительного знака, но может быть что-то, что выглядит как вопросительный знак, но им не является, и чтобы набрать это, вам нужно всего лишь использовать эту комбинацию из 5 клавиш»?
Лучше (по моему мнению) полностью исключить их и избежать ошибок.
решение2
Символы, которые не допускаются в имени файла:
<
(меньше, чем)>
(больше чем):
(двоеточие)"
(двойная кавычка)/
(косая черта)\
(обратная косая черта)|
(вертикальная планка или труба)?
(вопросительный знак)*
(звездочка)
в соответствии сСоглашения об именовании Microsoft.
Вы это имели в виду?
Причина, вероятно, в том, что в старой оболочке было бы слишком сложно работать с файлами, содержащими такие символы command.com
, например, ?
также означает любой символ, *
также означает любой файл и т. д.
Вместо того чтобы научить всех, как справляться с такими особыми случаями, они запретили это, упростив сценарий.
Для этих символов не будет эквивалентов в Unicode, а если бы и был, это все равно не решило бы эту проблему: существующие ASCII ?
и *
по-прежнему должны были бы работать как подстановочные знаки, в противном случае всем пришлось бы переписывать свои скрипты.
решение3
Вы можете использовать следующий Unicode, который выглядит похоже на оригинальный, без риска
Они допустимы в качестве имени Windows:
- « (У+00АБ) вместо < (меньше)
- » (U+00BB) вместо > (больше чем)
- ։ (U+0589или ÷ (У+00Ф7) или ‡ (U+2021) вместо : (двоеточие)
- «(У+201С) вместо " (двойные кавычки)
- ⁄ (U+2044) вместо / (косая черта)
- ∖ (U+2216) или \ (U+FF3C) или 〵 (U+3035) вместо \ (обратная косая черта)
- ¦ (У+00А6) вместо | (вертикальная черта или труба)
- ‽ (У+203Д) ⁇ (У+2047) ¿(У+00БФ) вместо ? (вопросительный знак)
- ☀ (У+2600) вместо * (звездочка)
Примечание:Таблица Юникодапозволяет искать персонажа по описанию (например, римский), самого персонажа, а также указывать в качестве ссылки других похожих персонажей (выглядящих так же)
Ниже приведено допустимое имя файла (скопируйте и вставьте, чтобы попробовать; работает под Windows 7 с проводником Windows и отображается правильно, извините, не могу добавить скриншот). Вы заметите, что вид в Windows отличается от вида в браузере (изменение шрифта)
юникод 一 ☀ ¦ » ։∖ ‡〵 ÷╲ ‽ ⁇ ¿ ‰ ¢ π ∞ « ≈.txt
Пара ссылок
- www.theasciicode.com.ar/extended-ascii-code/copyright-symbol-ascii-code-184.html
- http://www.theworldofstuff.com/characters/
- http://unicode-table.com/en/#00A9
- http://www.tedmontgomery.com/tutorial/altchrc-a.html
- http://unicode-table.com/en/#закрытые-альфа-нумерики
- https://stackoverflow.com/questions/8086375/какой-символ-использовать-чтобы-поместить-элемент-в-конец-алфавитного-списка
Примечание: Windows совместима с Posix с 1980 года (согласно Википедии), поэтому она соответствует POSIX RFC, включая тот, который определяет имена файлов.ответ на обмен стекамидать более широкий контекст вокруг RFC и какие символы разрешены в именах файлов
решение4
Теперь вы можете использовать эти символы самостоятельно. Но я предполагаю, что вы имеете в виду, что операционная система должна автоматически транслитерировать, например, вопросительный знак ASCII и его двойник, например, ﹖ ( SMALL QUESTION MARK
- UFE56). Я действительно не думаю, что это удовлетворительно, особенно с учетом того, что Linux и другие, где единственными недопустимыми символами для имен файлов являются слэш ( /
) и ноль (ASCII 0), легко принимают эти символы.
Дальнейшее чтение:
- Исправление имен файлов Unix/Linux/POSIX: Управляющие символы (например, новая строка), начальные тире и другие проблемы
- Статья в Википедии оИмена файлов