Почему Unicode не используется для зарезервированных символов файловой системы?

Почему Unicode не используется для зарезервированных символов файловой системы?

Мне бы очень хотелось использовать в 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


Пара ссылок

  1. www.theasciicode.com.ar/extended-ascii-code/copyright-symbol-ascii-code-184.html
  2. http://www.theworldofstuff.com/characters/
  3. http://unicode-table.com/en/#00A9
  4. http://www.tedmontgomery.com/tutorial/altchrc-a.html
  5. http://unicode-table.com/en/#закрытые-альфа-нумерики
  6. https://stackoverflow.com/questions/8086375/какой-символ-использовать-чтобы-поместить-элемент-в-конец-алфавитного-списка

Примечание: Windows совместима с Posix с 1980 года (согласно Википедии), поэтому она соответствует POSIX RFC, включая тот, который определяет имена файлов.ответ на обмен стекамидать более широкий контекст вокруг RFC и какие символы разрешены в именах файлов

решение4

Теперь вы можете использовать эти символы самостоятельно. Но я предполагаю, что вы имеете в виду, что операционная система должна автоматически транслитерировать, например, вопросительный знак ASCII и его двойник, например, ﹖ ( SMALL QUESTION MARK- UFE56). Я действительно не думаю, что это удовлетворительно, особенно с учетом того, что Linux и другие, где единственными недопустимыми символами для имен файлов являются слэш ( /) и ноль (ASCII 0), легко принимают эти символы.

Дальнейшее чтение:

Связанный контент