Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» ICSharpCode.SharpZipLib

Автор: mycarisgood
Дата сообщения: 24.02.2010 16:39
В веб-приложении (ASP.NET, C#) мне нужно паковать директорию в ZIP архив. Для этого использую библиотеку ICSharpCode.SharpZipLib.

Например так:

FastZip fz = new FastZip();
fz.CreateZip("D:\\test.zip", "D:\\test", true, "");

Так вот, если папка test содержит файлы, в именах которых присутствуют символы кириллицы, то они заменяются на знаки вопроса.

Самое странное то, что если я запускаю обычное консольное приложение на том же сервере, которое делает ТО ЖЕ САМОЕ:

FastZip fz = new FastZip();
fz.CreateZip("D:\\test.zip", "D:\\test", true, "");

проблем с кириллицей не возникает.

Я понимаю, что ИМЕННО С ЭТОЙ проблемой вряд ли кто сталкивался. Но, может быть, есть мысли почему такое может быть?
Автор: volser
Дата сообщения: 24.02.2010 17:41
mycarisgood
Ссылка
Автор: delover
Дата сообщения: 24.02.2010 18:55
mycarisgood
Зип состоит из двух частей. В одном случае надо сохранять OEM конверсию, в принципе ZIP не изобретение майкрософт и был заточен на разные системы и процессоры. В случае Windows (russion) используется Windows-1251. Иногда на Амиге и Эпл это трудно воспроизвести. В другом случае требуется сохранить совместимость с программами написанными людьми не успевшими изучить что такое кодировка.
Автор: mycarisgood
Дата сообщения: 25.02.2010 14:47
volser, delover

Огромное спасибо! Информация, которую я нашел по ссылке, решила проблему.

Оказалось, что при запуске библиотеки на веб-сервере DefaultCodePage = 437 (что нехорошо), а при запуске обычного приложения DefaultCodePage = 866 (что хорошо).

Решение:

ZipConstants.DefaultCodePage = 866;
FastZip fz = new FastZip();
fz.CreateZip("D:\\test.zip", "D:\\test", true, "");

Страницы: 1

Предыдущая тема: Помогите скачать BForceMD.exe


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.