какие знаки нельзя использовать в имени сжатых папок

Какие символы недопустимы для имен папок внутри ZIP файла?

Я звоню в базу данных и занимаю около 3000 записей, которые являются дочерними узлами родительских документов, с этими дочерними узлами я работаю над созданием дерева для создания имени плоской папки, которое выглядит примерно так:

Переход от родителя до самого ребенка, а затем идентификатор ребенка.

То, что я тогда делаю, это перебрать эти имена папок и создать новую папку с использованием имени, все это работает отлично, я запускаю имена через цикл, используя Path.GetInvalidFileNameChars, чтобы избавиться от любых символов, которые предотвратили бы создание папки из терпит неудачу.

Однако, когда дело доходит до того, чтобы закрепить эти папки, используя встроенную функцию zip в Windows (щелкните правой кнопкой мыши> отправить в> сжатую папку zip), я продолжаю получать ошибки:

[Имя папки] не может быть сжато, поскольку оно содержит символы, которые нельзя использовать в сжатой папке, например [foo]. Вы должны переименовать этот файл или каталог.

Было бы замечательно, если бы сообщение об ошибке на самом деле говорило мне диапазон символов, которые не могут быть включены в имена папок, но это не так, поэтому всякий раз, когда я заменяю символ, я получаю новое сообщение в сообщении об ошибке, это это то, что я делаю, чтобы очистить имя папки на данный момент:

Как вы можете видеть, мне нужно добавлять символы, возвращаемые GetInvalidFileNameChars() каждый раз при появлении новой ошибки.

Поэтому мой вопрос: есть ли встроенная функция в.NET framework, которую я могу использовать, которая предоставит мне символы, которые не разрешены в именах файлов/папок, а также символы, которые не могут быть в именах сжатых папок? Может ли кто-нибудь сказать мне, какие символы не разрешены в именах сжатых папок, чтобы я мог сам создать их?

Источник

Мир цифровой информации

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

Понятия «путь» и «имя файла»

Очень часто в компьютерной литературе используются термины «путь» и «имя файла» под разными значениями. Обычно под словом «путь» понимают адрес или расположение файла, т. е. диск, папка и подпапки в которых расположен файл. Однако Microsoft и другие считают, что в путь к файлу входит не только его расположение но и само имя файла. А некоторые подразумевают под словом «путь» только имена файла и папок, в которых он расположен, без указания диска. Некоторые пользователи полагают, что «имя файла» не включает расширение. В данной статье расширение всегда является частью имени файла. На примере ниже синим цветом выделен путь к файлу, а красным имя файла.
X:\папка\подпапка\ файл.расширение

Зарезервированные символы и имена

Ограничения на длины имен файлов и путей

Существуют ограничения на длину имени файла и на длину пути. Абсолютное ограничение длины имени файла вместе включая путь к нему равно 260 символам. Этот предел называют термином MAX_PATH. На самом же деле на практике пределы для имен еще меньше из-за ряда других ограничений. Например, каждая строка на конце должна содержать так называемый нулевой символ, который обозначает конец строки. Несмотря на то, что маркер конца строки не отображается, он учитывается как отдельный символ при подсчете длины, а значит остается 259 символов доступных для имени файла и пути к нему. Первые три символа в пути используются для обозначения диска (например, C:\). Это уменьшает предел для имен папок, подпапок и файла до 256 символов.

На имя объекта (папки или файла) наложено ограничение длины 255 символов. Этот предел действителен только, если объект не расположен внутри папки. Так как при расположении объекта внутри папки, сумма длин всех папок в которых он расположен, разделителей и имени объекта ограничена 256 символами, то предел длины самого имени объекта меньше 255 символов.

Источник

Ошибка при архивировании файлов с символами Юникода в именах с помощью Win7 «отправить в> сжатую (заархивированную) папку»

Когда я пытаюсь заархивировать файлы, содержащие в своих именах символы Юникода, такие как © или ™, я получаю следующую ошибку:

[Название окна] Ошибка сжатых (заархивированных) папок

Это стало проблемой только после переустановки Windows 7. Вероятно, у меня были некоторые ресурсы, необходимые для этой ошибки, чтобы они были автоматически устранены, но теперь это почти чистая установка, и я не могу заархивировать файлы. Как это исправить?

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

Встроенная архивация Windows 10 может не иметь этой проблемы, как сообщается в комментарии к этому вопросу.

2 ответа 2

Если оскорбительные символы написаны на языке, отличном от английского, но поддерживаемый Microsoft, вы можете установить соответствующий языковой пакет MUI (Многоязычный интерфейс пользователя) из Центра обновления Windows или соответствующий пакет LIP (Language Interface Pack) отсюда в качестве возможного исправления.

В дополнение к вышесказанному может потребоваться изменить языковой стандарт системы.

Системный языковой стандарт определяет набор символов по умолчанию (буквы, символы и цифры) и шрифт, используемый для ввода и отображения информации в программах, которые не используют Unicode. Это позволяет программам, не поддерживающим Юникод, запускаться на вашем компьютере с использованием указанного языка. Может потребоваться изменить язык системы по умолчанию при установке дополнительных языков отображения на вашем компьютере. Выбор другого языка для языкового стандарта системы не влияет на язык в меню и диалоговых окнах для Windows или других программ, которые используют Unicode.

Введите «регион» в поле поиска меню «Пуск» (без кавычек)

Откройте апплет « Регион и язык».

Перейдите на вкладку « Администрирование », а затем в разделе «Язык» для программ, не поддерживающих Юникод, нажмите « Изменить языковой стандарт системы». Если вас попросят ввести пароль администратора или подтверждение, введите пароль или предоставьте подтверждение.

Выберите язык и нажмите кнопку ОК.

Если вам будет предложено перезагрузить компьютер, нажмите « Перезагрузить сейчас», чтобы сделать это.

какие знаки нельзя использовать в имени сжатых папок. Смотреть фото какие знаки нельзя использовать в имени сжатых папок. Смотреть картинку какие знаки нельзя использовать в имени сжатых папок. Картинка про какие знаки нельзя использовать в имени сжатых папок. Фото какие знаки нельзя использовать в имени сжатых папок

Версии Microsoft Windows включают поддержку сжатия zip в Explorer начиная с версии Plus! Пак был выпущен для Windows 98. Microsoft называет эту функцию «Сжатые папки». Не все функции zip поддерживаются функцией сжатых папок Windows. Например, шифрование AES, разделенные или составные архивы и кодировка записей Unicode, как известно, недоступны для чтения или записи функцией «Сжатые папки» в Windows XP или более поздних версиях.

D.1 Формат ZIP исторически поддерживал только исходный набор кодировки символов IBM PC, обычно называемый IBM Code Page 437. Это ограничивает хранение символов имени файла только теми, которые находятся в исходном диапазоне значений MS-DOS, и не поддерживает имена файлов в других кодировках или языках. Чтобы устранить это ограничение, данная спецификация будет поддерживать следующее изменение. [ Прочитайте документ для отдыха. ]

Вы можете прочитать мрачные подробности об этом специфическом отсутствии поддержки Unicode в Windows в следующей серии постов Microsoft Майкла Каплана:

Что касается окончательного сжатого размера, в зависимости от данных / комбинации форматов файлов в архиве, я обнаружил, что любой из двух справляется лучше (хотя опять-таки различия были незначительными). Конечно, форматы 7z или Rar (или даже WinZip ZipX) намного лучше в этом отношении и будут превосходить обычные ZIP почти каждый день (то есть ZIP использует традиционный / устаревший алгоритм дефляции вместо PPMd и тому подобное).

Источник

Какие символы запрещены в именах каталогов Windows и Linux?

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

мне нужно сначала создать каталог в файловой системе, используя имя что может содержат запрещенные символы, поэтому я планирую заменить эти символы подчеркивает. Затем мне нужно записать этот каталог и его содержимое в zip-файл (используя Java), поэтому любые дополнительные советы относительно имен zip-каталогов буду признателен.

12 ответов

давайте держать его простым и ответить на вопрос, в первую очередь.

запрещено печатаемые символы ASCII являются:

непечатаемые символы

если ваши данные поступают из источника, который разрешил бы непечатаемые символы, то есть больше, чтобы проверить для.

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

зарезервированные имена файлов

следующие имена зарезервировано:

другие правила

имена файлов не могут заканчиваться пробелом или точкой.

другие люди покрыли правила Windows.

обратите внимание, что MacOS X имеет файловую систему без учета регистра.

1 это был Керниган и Пайк в практика программирования кто сказал это в главе 6, тестирование, §6.5 стресс Тесты:

когда Стив Борн писал свою оболочку Unix (которая стала известна как оболочка Борна), он сделал каталог из 254 файлов с односимвольными именами, по одному для каждого значения байта, кроме ‘ ‘ и Слэш, два символа, которые не могут отображаться в именах файлов Unix. Он использовал эту директорию для всевозможных тестов на соответствие шаблону и токенизацию. (Конечно, тестовый каталог был создан программой.) В течение многих лет после этого этот каталог был проклятием файл-дерево-Ходячие программы; он тестировал их до разрушения.

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

это не решает проблему зарезервированных имен в целевой файловой системе, но с белым списком проще снижение рисков у источника.

в этом духе, это набор символов, которые можно считать безопасным:

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

это уже позволяет довольно сложные и бессмысленные имена. Например, эти имена были бы возможны с этими правилами и были бы допустимыми именами файлов в Windows / Linux:

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

Ну, если только для исследовательских целей, то вам лучше всего посмотреть эта запись Википедии о именах файлов.

Если вы хотите написать портативную функцию для проверки ввода пользователя и создания имен файлов на основе этого, короткий ответ не. Взгляните на портативный модуль, такой как Perl File:: Spec чтобы увидеть все прыжки, необходимые для выполнения такой «простой» задачи.

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

для Windows вы можете проверить его с помощью PowerShell

для отображения UTF-8 кодов вы можете конвертировать

пример кода VBA:(будут добавлены позже)

например, хотя это может быть законным именем файла 1>&2 или 2>&1 в Unix такие имена файлов могут быть неправильно истолкованы при использовании в командной строке.

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

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

Источник

Список запрещённых имён для файлов и каталогов в Windows

В современном с ума сошедшем мире всё перевернулось с ног на голову нетбуки стали называть ноутбуками, каталоги именуют нынче папками (разделы наверно мамками:), вместо Ё пишут Е и пашло поехало 🙂

Согласно Обзор файловых систем FAT, HPFS и NTFS в системе Windows нельзя обычным образом создать файлы и каталоги с именами:

Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!

Также в именах для файлов и каталогов нельзя использовать символы:

На самом деле файлы и каталоги с запрещёнными (зарезервированными) именами создать можно, если очень хочется:

Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!

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

Ссылки по теме:

Рекомендуемый контент

А тут же ж мог быть рекомендуемый контент от гугла 🙂 Для отображения рекомендуемого контента необходимо в браузере разрешить выполнение JavaScript скриптов, включая скрипты с доменов googlesyndication.com и doubleclick.net

Вы не любите рекламу!? Напрасно!:) На нашем сайте она вовсе ненавязчивая, а потому для нашего сайта можете полностью отключить AdBlock (uBlock/uBlock Origin/NoScript) и прочие блокировщики рекламы! AdBlock/uBlock может препятствовать нормальной работе системы поиска по сайту, отображению рекомендуемого контента и прочих сервисов Google. Рекомендуем полностью отключить блокировщик рекламы и скриптов, а также разрешить фреймы (aka iframe).

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *