Какие символы не могут содержаться в имени файла

Какие символы не могут содержаться в имени файла thumbnail

Если вы загружаете на сайт файлы (документы, изображения, архивы и пр.), и подразумевается, что доступ к этим файлам будет публичный, а не ограниченный списком избранных товарищей, нужно иметь в виду, что различные многочисленные пользователи сети интернет используют разные устройства ( настольные компьютеры, ноутбуки, планшеты, смартфоны, …) и разные операционные системы (Mac, PC, Linux, …).

Символы, запрещенные в имени файла

И чтобы у всех ваши файлы адекватно открывались, отображались и скачивались, нужно перестраховаться и избегать использования в названиях файлов и каталогах сайта запрещенных символов.



Использование правильных названий для папок и файлов очень важно для web, особенно — для загружаемых файлов, таких как PDF-файлы, документы MS Word, электронные таблицы MS Excel и др.

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

Не используйте следующие запрещенные символы в названиях директорий и файлов:

# — pound (решетка) < — left angle bracket (знак «меньше») $ — dollar sign (доллар) + — plus sign (плюс)
% — percent (процент) > — right angle bracket (знак «больше») ! — exclamation point (восклицательный знак) ` — backtick (обратная кавычка)
& — ampersand (амперсенд) * — asterisk (звездочка) — single quotes (одинарные кавычки) | — pipe (вертикальная черта)
{ — left bracket (левая фигурная скобка) ? — question mark (вопросительный знак) — double quotes (двойные кавычки) = — equal sign (равно)
} — right bracket (правая фигурная скобка) / — forward slash (прямой слеш) : — colon (двоеточие) 
— back slash (обратный слеш)— blank spaces (пробел) @ — at sign (собачка) 



Не каждый сайт или сервер имеет механизм проверки файлов и, зачастую, даже если имя файла содержит запрещенные символы, вы все равно сможете загрузить его на сервер. Но вот скачать его, скорее всего, никто не сможет, особенно, через web-интерфейс.

Рассмотрим ситуацию, в которой пользователь загрузил на сайт PDF-файл, содержащий в названии символ «Решетка» (pound) — #. Сервер имеет операционную систему Linux. Поведение сервера при наличии таких символов в именах файлов будет неадекватным.

В этом случае апач считает что URL — это все, что находится перед знаком «Решетка», а все что после него — это якорь на HTML-странице, т.е. ссылка на конкретное место в HTML-документе. Соответственно, он не распознает его, как файл и не отдает пользователю.

Так как на большинстве сайтов используется автоматический Загрузчик файлов, который без лишних вопросов загружает то, что пользователь выбирает на своем компьютере. Поведение апача верное, но он не может отличить файл от html, для него всё является ссылкой, поэтому он так и будет обрабатывать.

Таким образом, нужно всего лишь не использовать символы запрещенные для имен и папок на сайте. Это самое простое в реализации.

Дополнительно, запомните следующие правила и постарайтесь им следовать:

  • Название файлов не должно начинаться и заканчиваться знаком «Пробел» (space), «Точка» (period), «Дефис» (hyphen) или «Подчеркивание» (underline);
  • Не присваивать файлам слишком длинные названия, постараться не превышать 31 символ;
  • По возможности всегда использовать только маленькие буквы, некоторые операционные системы чувствительны к регистру;
  • Избегайте использование знака «Пробел» и «Подчеркивание», если название файла состоит из нескольких слов. В этом случае лучше используйте знак «Дефис».
  • Не используйте отличные от латиницы буквы для названий файлов и папок (русские, китайские, немецкие с умляут и др.). Не смотря на широкие возможности современных кодировок типа UTF-8, у некоторых пользователей могут возникнуть трудности с файлами, имеющими такие экзотические символы в названии.

Источник

Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 5 июня 2015;
проверки требуют 25 правок.

Отображение содержимого каталога C:temp — имён находящихся в нём файлов — по команде dir в командном итерпретаторе ОС Windows

И́мя фа́йла — строка символов, однозначно определяющая файл в некотором пространстве имён файловой системы (ФС), обычно называемом каталогом, директорией или папкой. Имена файлов строятся по правилам, принятым в той или иной файловой и операционной системах (ОС). Многие системы позволяют назначать имена как обычным файлам, так и каталогам и специальным объектам (символическим ссылкам, блочным устройствам и т. п.).

Имя файла является частью полного имени файла, также называемого полным или абсолютным путём к файлу. Полное имя может включать следующие компоненты:

  • протокол или способ доступа (http, ftp, file и т. п.);
  • имя или адрес компьютера, узла сети (wikipedia.org, 207.142.131.206, \MYCOMPUTER, SYS: и т. п.);
  • устройство хранения, диск (C:, /, SYSLIB и т. п.);
  • путь к каталогу (/usr/bin, TEMP, [USR.LIB.SRC] и т. п.);
  • собственно имя файла, которое может содержать его расширение (.txt, .exe, .COM и т. п.);
  • версия или номер ревизии (perl6, ping6 и т. п.)[уточнить].

Имя файла необходимо для того, чтобы к файлу мог обратиться пользователь. В одном каталоге не может быть двух файлов с одинаковыми именами (некоторые файловые системы регистрозависимы, что оставляет возможность для создания файлов, имена которых отличаются регистром символов).

Имя файла обычно состоит из двух частей, разделенных точкой:

  • Название (до точки, часто также называют именем);
  • Расширение.

Имена файлов в разных системах[править | править код]

Полным, или абсолютным, называется имя файла, содержащее все каталоги до корня файловой системы. Относительные имена файлов не содержат полного пути и обычно привязываются к текущему каталогу.

Windows[править | править код]

Полное имя файла в Windows-системах состоит из буквы диска, после которого ставится двоеточие и обратная наклонная черта (обратный слеш), затем через обратные слеши перечисляются подкаталоги, в конце пишется имя файла. Пример:

C:WindowsSystem32calc.exe

Полное имя файла (включая расширение) в Windows может содержать до 260 символов, данное значение определено константой MAX_PATH в Windows API; например, полное имя файла максимально допустимой длины на диске C будет таким: «C:<256 символов>NULL» (например, «C:<254 символа><1 символ>NULL»). Однако, юникодовые версии некоторых функций позволяют использовать полные имена файлов длиной до 32767 символов, такие имена начинаются с префикса «\?». Пример:

\?C:WindowsSystem32calc.exe

При использовании префикса «\?» необходимо указывать абсолютный путь к файлу, относительные пути не допускаются. При использовании относительных путей максимальная длина полного имени файла определена константой MAX_PATH (260 символов).

UNIX[править | править код]

В UNIX и UNIX-подобных системах полный путь состоит из слеша (/), обозначающего корневой каталог, после которого через слеши перечисляются подкаталоги, в конце пишется имя файла. Пример:

/usr/local/bin/gcc

Пути, начинающиеся не с косой черты, считаются относительными и отсчитываются относительно рабочего каталога. Пример:

../mc при нахождении в каталоге /etc/apache2 эквивалентно /etc/mc.

Особое значение у путей, которые начинаются с тильды (~). Тильда обозначает домашний каталог текущего или указанного пользователя. Пример:

~/Desktop для пользователя user во многих системах и случаях эквивалентно /home/user/Desktop[1]
~admin/passwords для любого пользователя равносильно /home/admin/passwords[1]
~root/test для любого пользователя — то же самое, что и /root/test[1], потому что суперпользователь (root) имеет особый домашний каталог.

  1. 1 2 3 Для каталога каждого пользователя в современных ОС может быть настроен произвольный путь.

Запрещённые символы[править | править код]

Многие операционные системы запрещают использование некоторых служебных символов.

Запрещённые символы Windows (в различных версиях):

  •  — разделитель подкаталогов
  • / — разделитель ключей командного интерпретатора
  • : — отделяет букву диска или имя альтернативного потока данных
  • * — заменяющий символ (маска «любое количество любых символов»)
  • ? — заменяющий символ (маска «один любой символ»)
  • » — используется для указания путей, содержащих пробелы
  • < — перенаправление ввода
  • > — перенаправление вывода
  • | — обозначает конвейер
  • + — (в различных версиях) конкатенация

Частично запрещённые символы Windows:

  • пробел — не допускается в конце имени файла;
  • . — не допускается в конце имени файла кроме имён каталогов, состоящих из точек и доступа с префиксом «\?».

Символы, вызывающие проблемы в широко распространённых компонентах:

  • % — в Windows используется для подстановки переменных окружения в интерпретаторе команд, вызывает проблемы при открытии файла через стандартный диалог открытия файла;
  • ! — в Windows используется для подстановки переменных окружения в интерпретаторе команд, в bash используется для доступа к истории[1];
  • @ — в интерпретаторах команд вызывает срабатывание функций, предназначенных для почты.

В именах файлов UNIX и некоторых UNIX-подобных ОС запрещен слеш (/) — разделитель подкаталогов — и символ конца C-строки (). Перечисленные выше символы (кроме слеша) использовать можно, но из соображений совместимости их лучше избегать.

Расширение имени файла[править | править код]

Расширение имени файла (англ. filename extension, часто говорят просто расширение файла или расширение) — последовательность символов, добавляемых к имени файла и предназначенных для идентификации типа (формата) файла. Это один из распространённых способов, с помощью которых пользователь или программное обеспечение компьютера может определить тип данных, хранящихся в файле. Расширение отделяется от основной части имени файла последней точкой. Иногда могут использоваться несколько расширений, следующих друг за другом, например, «.tar.gz».

ОС или менеджер файлов могут устанавливать соответствия между расширениями файлов и приложениями. Когда пользователь открывает файл с зарегистрированным расширением, автоматически запускается соответствующая этому расширению программа. Некоторые расширения могут показывать, что файл является исполняемым (в Windows).

См. также[править | править код]

  • inode

Примечания[править | править код]

  1. ↑ Вызывает проблему в команде вида
    echo «$(ls ‘Привет мир!’)»

    . Рабочий вариант команды:

    echo «$(ls ‘Привет мир’!)»

    .

Литература[править | править код]

  • Робачевский А. Н., Немнюгин С. А., Стесик О. Л. Имен файлов / Базовая файловая система System V / Глава 4. Файловая система // Операционная система UNIX. — 2-е изд. — СПб.: БХВ-Петербург, 2008. — С. 338—339. — 656 с. — ISBN 978-5-94157-538-1.

Источник

Виктория Горностаева  ·  21 мая 2015

12,7 K

По образованию врач, по профессии — системный аналитик

Потому что эти символы являются служебными и если использовать их в названии файлов, у системы возникнут большие проблемы с пониманием того, что вы хотели сказать.

Возьмем пример с обратной косой чертой ()

Допустим, вы пользователь Windows и вы хотите добавить файл в папку C:UsersPublicMusic

Если ваш файл будет называться melody.mp3, то путь до файла (адрес, по которому компьютер будет искать этот файл, если вы попросите) будет выглядеть как C:UsersPublicMusicmelody.mp3

Это просто и понятно. Но допустим, вы решили назвать файл mymelody.mp3

Путь в такой ситуации выглядел бы как C:UsersPublicMusicmymelody.mp3

Если вы захотите открыть файл, компьютер будет искать папку my внутри папки Music. Естественно, он ее не найдет. Чтобы избежать таких ситуаций, пользователям не разрешается использовать в названиях

Прямая косая черта / тоже относится к служебным символам и используется для параметров команд (это редко нужно рядовому пользователю, конечно).

Символ * тоже относится к служебным: при поиске по файлам он используется для обозначения произвольного набора символов. Например, если вам нужно выбрать все текстовые файлы, начинающиеся на A, вы можете указать в поиске такое: A*.txt и получите список всех подходящих файлов. Очевидно, что использование звездочки в названиях создало бы много проблем.

Что такое cookie файлы и почему почти на каждом сайте спрашивают согласен ли я на их использование?

Не столько печеньки, сколько небольшие записи, хранимые ограниченное время на стороне клиента в протоколе HTTP/s, переданные сервером(сайтом).

Изначально файлы cookie действительно использовались для таких рутинных и простых операций, как идентификация на сайте. Пользователю стоит только однажды ввести логин и пароль, и сервер «запоминает» его, высылая ему нужную cookie-запись, которая является парой ключ=значение. В следующий раз, браузер будет всегда отправлять эту запись cookie (ключ=значение) при запросах на сервер, так сервер может отличать разных посетителей на основе их предыдущих действий (не только ввод пароля — куки могут хранить настройки пользователя, например регион/страну или выбранный язык). Конечно, все немного хитрее чем вам кажется — ключем куки не является ваш логин, а пароль не передается в ее значении — есть более безопасный механизм сессий на случай, если куки украдут.

Однако, с течением времени, появились более изощренные и менее очевидные способы использования кук. Например, они используются для того, что бы отслеживать (track) действия пользователя в пределах сайта, а еще позже — отслеживать сайты, которые пользователь посещает. Это стало возможным благодаря развитию JavaScript и крупным платформам вроде Google Analytics (аналогично и Яндекс.Метрики), и сотням других чуть менее популярных сервисов, скриптов, приложений, устанавливаеых на сайт. Так, эти платформы умеют точно сопоставлять, что вы искали в интернете и что вы далее сделали, перейда на сайт, на какой из нажатых ссылок в выдаче ваш сеанс был наиболее долгим, что используется в том числе для повышения релевантности ссылки по вашему запросу.

Вы можете посмотреть куки в вашем браузере, например в настройках содержимого в браузере Chrome (All cookies and site data). Вы увидите, что в основном, куки имеют бесполезные значения и почти бесполезные имена ключей, потому что вся магия делается наименее очевидной и выносится в back-end (на сервер), который получает куки при каждом обращении к хосту. Режим инкогнито (и другие аналоги «приватного» режима) основаны именно на том, что браузер создает новую временную базу данных (в которой нет старых кук), и забывает все новые куки, полученные в ходе сеанса (ну и историю не записывает).

В соглашении о приватности (privacy agreement) на различных сайтах вас предупреждают, что сайт использует cookies потому, что технически это позволяет получить исчерпывающую информацию о ваших действиях на этом сайте, хотя сам протокол HTTP анонимен.

Правда ли, что Windows 10 собирает беспрецедентное количество данных о пользователе, включая все вводимые им тексты, все файлы и так далее?

Аналитик, магистр в области искусственного интеллекта СПбГУ

Отвечу не полно, но это делает не только Windows 10, но и Windows 8 и iOS и Android, причём, я думаю, что и Android, и iOS это делают это гораздо в большем объёме, чем Windows. У меня был случай, когда я через браузер Опера на Windows компьютере заказал билеты напрямую через сайт Аэрофлота и мой Android телефон радостно тут же написал уведомление, что не забудьте про ваш полёт завтра из этого терминала во столько-то, только потом я понял, что эту информацию можно было получить только из e-mail, который был привязан к телефону. Но телефон обрабатывает так же все СМС, фото, запросы в интернет, хранит историю всех перемещений по GPS и т.п.

Более того, много файлов и иногда без спроса закачиваются с вашего компьютера на сервера антивирусов, чаще всего с целью проверки на вирус, если файл выглядит для антивируса подозрительно. Иногда ОС может без предупреждения может делать скриншоты экрана и отправлять на сервера, например во время какой-то ошибки, даже если уведомления об ошибке не появлялось — забавно, что в этом случае становится бессмысленно использование TOR и аналогичного ПО для анонимизации, если теоретически можно посмотреть скриншоты с экрана, что вы делали и когда. Так что я бы не назвал нововведения по обработке персональных данных Windows 10 чем-то беспрецедентным.

Если кто-то хочет понять, что про него знает, например Google, то вот некоторые ссылки на эту тему:

То как видит вас Google исходя из всех данных о вас

  • google.com

История ваших перемещений по GPS

  • google.com

Ваша история поиска в Google

  • google.com

Список всех ваших устройств, с которых вы пользуетесь Google

  • google.com

Прочитать ещё 7 ответов

Почему в адресной строке так много знаков процента?

Cтандарт URL (Universal Resource Locator — универсальный указатель ресурса) обладает серьёзным недостатком — в нём можно использовать только ограниченный набор символов, даже меньший, нежели в ASCII: латинские буквы (в верхнем и нижнем регистре), цифры и лишь некоторые знаки препинания (- _ . ~). Если мы захотим использовать в URL символы кириллицы, или иероглифы, или, скажем, специфические символы французского языка, то нужные нам символы должны быть перекодированы особым образом.

Такое преобразование происходит в два этапа: сначала каждый символ кириллицы кодируется в Юникоде (UTF-8) в последовательность из двух байтов, а затем каждый байт этой последовательности записывается в шестнадцатеричном представлении:

М → D0 и 9C → %D0%9C

и → D0 и B8 → %D0%B8

к → D0 и BA → %D0%BA

р → D1 и 80 → %D1%80, и т. д

Перед каждым таким шестнадцатеричным кодом байта, согласно спецификации URL[4], ставится знак процента (%) — отсюда даже возник английский термин «percent‐encoding», обозначающий способ кодирования символов в URL и URI.

Может ли быть так, что все видят цвета по-разному, не могут их описать, но синхронизируются, зная их названия?

Гимназист и весьма сомнительное будущее филологии

Думаю, можно вспомнить такое понятие, как «Квалиа», но оно относится к области философии и считается спорным, имеет много сторонников и противников. А объясняет оно именно субъективное восприятие цвета

Например, вы прямо сейчас смотрите на обложку этого вопроса. Для вас это только зеленый цвет и никакой другой. Другой человек тоже смотрит на обложку и тоже видит ее зеленым. Но для него зеленый — это как для вас, например, синий. Он видит его смещенным (но только для вас, для него все в порядке) спектром. Просто относительно вас он видит, а точнее чувствует его так. То есть все в мире, что для вас зеленое, для него оно как для вас синее. Но он привык называть этот цвет зеленым и никаким другим, так, как его учили с детства. И вы, собственно, никогда не сможете узнать, каким конкретно он ощущает этот цвет. Можно попробовать связать с ассоциацией: «Эта обложка такого же цвета, как и трава». Но для этого человека и она, и трава одного цвета и он называет его зеленым, как его опять же и учили. 

А теперь представьте, что каждый из нас видит мир в определенной цветовой палитре, которая отличается от палитры любого другого человека. И именно Квалиа позволяет сторонникам этой идеи осознавать иллюзорность, виртуальность именно их мира.

Прочитать ещё 23 ответа

Источник

Если вы загружаете на сайт файлы (документы, изображения, архивы и пр.), и подразумевается, что доступ к этим файлам будет публичный, а не ограниченный списком избранных товарищей, нужно иметь в виду, что различные многочисленные пользователи сети интернет используют разные устройства ( настольные компьютеры, ноутбуки, планшеты, смартфоны, …) и разные операционные системы (Mac, PC, Linux, …).

Символы, запрещенные в имени файла

И чтобы у всех ваши файлы адекватно открывались, отображались и скачивались, нужно перестраховаться и избегать использования в названиях файлов и каталогах сайта запрещенных символов.



Использование правильных названий для папок и файлов очень важно для web, особенно — для загружаемых файлов, таких как PDF-файлы, документы MS Word, электронные таблицы MS Excel и др.

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

Не используйте следующие запрещенные символы в названиях директорий и файлов:

# — pound (решетка) < — left angle bracket (знак «меньше») $ — dollar sign (доллар) + — plus sign (плюс)
% — percent (процент) > — right angle bracket (знак «больше») ! — exclamation point (восклицательный знак) ` — backtick (обратная кавычка)
& — ampersand (амперсенд) * — asterisk (звездочка) — single quotes (одинарные кавычки) | — pipe (вертикальная черта)
{ — left bracket (левая фигурная скобка) ? — question mark (вопросительный знак) — double quotes (двойные кавычки) = — equal sign (равно)
} — right bracket (правая фигурная скобка) / — forward slash (прямой слеш) : — colon (двоеточие) 
— back slash (обратный слеш)— blank spaces (пробел) @ — at sign (собачка) 



Не каждый сайт или сервер имеет механизм проверки файлов и, зачастую, даже если имя файла содержит запрещенные символы, вы все равно сможете загрузить его на сервер. Но вот скачать его, скорее всего, никто не сможет, особенно, через web-интерфейс.

Рассмотрим ситуацию, в которой пользователь загрузил на сайт PDF-файл, содержащий в названии символ «Решетка» (pound) — #. Сервер имеет операционную систему Linux. Поведение сервера при наличии таких символов в именах файлов будет неадекватным.

В этом случае апач считает что URL — это все, что находится перед знаком «Решетка», а все что после него — это якорь на HTML-странице, т.е. ссылка на конкретное место в HTML-документе. Соответственно, он не распознает его, как файл и не отдает пользователю.

Так как на большинстве сайтов используется автоматический Загрузчик файлов, который без лишних вопросов загружает то, что пользователь выбирает на своем компьютере. Поведение апача верное, но он не может отличить файл от html, для него всё является ссылкой, поэтому он так и будет обрабатывать.

Таким образом, нужно всего лишь не использовать символы запрещенные для имен и папок на сайте. Это самое простое в реализации.

Дополнительно, запомните следующие правила и постарайтесь им следовать:

  • Название файлов не должно начинаться и заканчиваться знаком «Пробел» (space), «Точка» (period), «Дефис» (hyphen) или «Подчеркивание» (underline);
  • Не присваивать файлам слишком длинные названия, постараться не превышать 31 символ;
  • По возможности всегда использовать только маленькие буквы, некоторые операционные системы чувствительны к регистру;
  • Избегайте использование знака «Пробел» и «Подчеркивание», если название файла состоит из нескольких слов. В этом случае лучше используйте знак «Дефис».
  • Не используйте отличные от латиницы буквы для названий файлов и папок (русские, китайские, немецкие с умляут и др.). Не смотря на широкие возможности современных кодировок типа UTF-8, у некоторых пользователей могут возникнуть трудности с файлами, имеющими такие экзотические символы в названии.

Источник