Поддержка символов пробелов в именах файлов и папок для Windows
В этой статье описывается поддержка символов пробелов в именах файлов и папок.
Исходный номер базы знаний: 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.