Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > Создание архива |
Автор: CYBERDREAM 25.2.2008, 19:58 | ||
Приветствую всех. Создаю архив с помощью библиотечки: ICSharpCode.SharpZipLib.Zip; http://www.icsharpcode.net/OpenSource/SharpZipLib/ Русские буквы выводятся неверно
как то можно этого избежать. Заранее спасибо |
Автор: vponomarov 26.2.2008, 16:32 | ||
Не знаю, как в этой библиотеке, но писал недавно свой архиватор и разбирался с примером из МСДНа. Так вот там для записи строк в файл использовалась такая конструкция
и русские буквы превращались в квадратики. После замены ASCII на Default проблема решилась. Если есть доступ к исходникам библиотеки, попробуй выполнить нечто подобное. |
Автор: marcusmae 26.2.2008, 16:56 |
Извините, я, может, не всё понимаю, но почему-то мне всегда казалось, что архиваторы работают с любыми файлами, как с бинарными. И разархивированные байты должны быть в точности такими же, как исходные. Если же байты - это текст, то он должен быть в той же кодировке, что и исходный. Иначе, фтопку такой архиватор, т.к. де факто он повредил данные. Или я ошибаюсь? |
Автор: vponomarov 26.2.2008, 17:01 | ||
все правильно, так и должно быть. не знаю, как у автора поста, но у меня была проблема с русскими буквами не внутри архивируемых файлов (там все ок), а в именах файлов, потому что они (имена) записывались указанным мной методом. Т.е. сами данные не повреждались, просто русские имена файлов становились нечитаемыми после разархивации. |
Автор: vponomarov 26.2.2008, 17:26 | ||||
именно это и делает зловредная функция:
т.е. проблема возникает на стадии записи имен файлов во "внутренние таблицы архива". я не утверждаю, что указанная библиотека поступает так же. Повторюсь еще раз: с данной проблемой я столкнулся разбирая пример МСДНа. Но есть подозрение, что в ICSharpCode.SharpZipLib.Zip делают примерно тоже. |
Автор: CYBERDREAM 26.2.2008, 17:54 | ||
Спасибо за содействие. Внутри файлов все без проблем, а вот наименования страдают. Вот собственно класс, которым осуществляю архивацию:
Пока что ничего путного не получилось, вечером пострадаю. |
Автор: vponomarov 27.2.2008, 10:47 | ||
проблему, по-моему, нужно искать внутри одного из этих методов:
|
Автор: Sherlock 27.2.2008, 12:42 |
Да, я тоже думаю, что надо покопаться в самой библиотеке, исходники я так понял есть... |
Автор: andrey_pro 3.5.2010, 13:24 |
Хочу поднять тему! Тоже столкнулся с такой проблемой. Архивирую файлы. В именах файллв встречаются символы « и ». При архивировании они непонятно почему заменяются на символя < и >. Сами русские буквы остаются в нормальном виде. В коде: ZipConstants.DefaultCodePage = 866 Кто нибудь с этим сталкивался? |
Автор: uranpro 4.5.2010, 11:53 | ||||
из сорца ZipOutputStream.PutNextEntry
ZipConstants.ConvertToArray
|
Автор: andrey_pro 4.5.2010, 14:10 |
в сорцах пробывал менять метод ZipConstants.ConvertToArray изменял кодировку, но если ставить кодировку не 866 то вместо русских букв - абракабра |