Поддержка символов пробелов в именах файлов и папок для Windows

В этой статье описывается поддержка символов пробелов в именах файлов и папок.

Область применения: Windows 10 — все выпуски, Windows Server 2012 R2
Исходный номер базы знаний: 2829981

Сводка

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

Например:

  • Если файл сохраняется как "Foo.txt", где ведущим символом является пространство ASCII (0x20), он будет сохранен в файловой системе как "Foo.txt".
  • Если файл сохраняется как "Foo.txt ", где конечные символы являются пространством ASCII (0x20), он будет сохранен в файловой системе как "Foo.txt".
  • Если файл сохраняется как .Foo.txt, где ведущими символами является период ASCII (0x2E), он будет сохранен в файловой системе как .Foo.txt.
  • Если файл сохраняется как "Foo.txt.", где конечные символы являются периодом ASCII (0x2E), он будет сохранен в файловой системе как "Foo.txt".
  • Если файл сохраняется как "Foo.txt", где ведущие символы являются альтернативным символом пробела, например идеографическим пробелом (0x3000), он будет сохранен в файловой системе как "Foo.txt". Символы начального пробела не удаляются.
  • Если файл сохраняется как "Foo.txt", где конечные символы являются альтернативным символом пробела, например идеографическим пробелом (0x3000), он будет сохранен в файловой системе как "Foo.txt ". Конечные пробелы не удаляются. Имена файлов и папок, которые начинаются или заканчиваются символом пробела, перечисляются по-разному API Win32 и WinRT в соответствии с требованиями экосистемы.

Дополнительная информация

Символы пробелов

Существуют различные пробелы, представляющие различные "пробелы" ширины (глифы). Только символы пространства ASCII (0x20) и периода ASCII (0x24) обрабатываются специально диспетчером объектов. Хотя символ идеографического пространства (0x3000) также создается с помощью пробела (если IME включен), он не обрабатывается специально.

  • 0x0020 ПРОБЕЛ
  • 0X00A0 СВОБОДНОЕ ПРОСТРАНСТВО
  • 0X1680 OGHAM SPACE MARK
  • 0X180E МОНГОЛЬСКАЯ ГЛАСНАЯ
  • 0x2000 EN QUAD
  • 0x2001 EM QUAD
  • 0x2002 EN SPACE
  • 0x2003 EM SPACE
  • 0X2004 ТРЕХ ПРОСТРАНСТВ НА EM
  • 0X2005 ЧЕТЫРЕ МЕСТА НА EM
  • 0X2006 ШЕСТИ НА EM
  • 0X2007 ПРОСТРАНСТВО РИСУНКОВ
  • 0X2008 ПРОБЕЛ ПРЕПИНАНИЯ
  • 0x2009 ТОНКИЙ ПРОБЕЛ
  • 0X200A ПРОСТРАНСТВО ДЛЯ ВОЛОС
  • 0X200B ПУСТОЕ ПРОСТРАНСТВО ШИРИНЫ
  • 0x202F ОГРАНИЧЕННОЕ ПРОСТРАНСТВО БЕЗ ПЕРЕРЫВА
  • 0X205F СРЕДНЕЕ МАТЕМАТИЧЕСКОЕ ПРОСТРАНСТВО
  • 0x3000 IDEOGRAPHIC SPACE
  • 0XFEFF НУЛЕВАЯ ШИРИНА БЕЗ РАЗРЫВА ПРОСТРАНСТВА

Диспетчер объектов

Символы пространства ASCII (0x20) в начале или конце имени файла или папки удаляются диспетчером объектов при создании.

Символы периода ASCII (0x2E) в конце имени файла или папки удаляются диспетчером объектов при создании.

Все остальные начальные или конечные символы пробелов сохраняются диспетчером объектов.

Перечисление API

Win32 API

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

WinRT API

API WinRT предназначен для поддержки нескольких поставщиков данных (физические диски, OneDrive, Facebook и т. д.). Для этого API WinRT использует поисковую систему для перечисления файлов и папок. Из-за подхода поиска к перечислению API WinRT (StorageFile, StorageFolder и т. д.) не обрабатывает имена файлов и папок с конечными пробелами, кроме пространства ASCII (0x20) и периода ASCII (0x2E), находящихся в локальной или удаленной файловой системе. Он обрабатывает ведущие символы пробелов, отличные от ASCII.

Наблюдаемое поведение

проводник и классические приложения

Все файлы и папки отображаются в проводник и классических приложениях независимо от включения или расположения пробелов.

Приложения Microsoft Store

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