![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
CYBERDREAM |
|
|||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: 11 Всего: 28 |
Приветствую всех.
Создаю архив с помощью библиотечки: ICSharpCode.SharpZipLib.Zip; http://www.icsharpcode.net/OpenSource/SharpZipLib/ Русские буквы выводятся неверно
как то можно этого избежать. Заранее спасибо -------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
|||
|
||||
vponomarov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 11.8.2007 Где: Киев Репутация: 4 Всего: 12 |
Не знаю, как в этой библиотеке, но писал недавно свой архиватор и разбирался с примером из МСДНа.
Так вот там для записи строк в файл использовалась такая конструкция
и русские буквы превращались в квадратики. После замены ASCII на Default проблема решилась. Если есть доступ к исходникам библиотеки, попробуй выполнить нечто подобное. |
|||
|
||||
marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Извините, я, может, не всё понимаю, но почему-то мне всегда казалось, что архиваторы работают с любыми файлами, как с бинарными. И разархивированные байты должны быть в точности такими же, как исходные. Если же байты - это текст, то он должен быть в той же кодировке, что и исходный. Иначе, фтопку такой архиватор, т.к. де факто он повредил данные. Или я ошибаюсь?
-------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
vponomarov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 11.8.2007 Где: Киев Репутация: 4 Всего: 12 |
все правильно, так и должно быть. не знаю, как у автора поста, но у меня была проблема с русскими буквами не внутри архивируемых файлов (там все ок), а в именах файлов, потому что они (имена) записывались указанным мной методом. Т.е. сами данные не повреждались, просто русские имена файлов становились нечитаемыми после разархивации. |
|||
|
||||
marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Если это не .NET изменил кодировку строк ДО архивации, то тоже похоже на проблему архиватора (ведь он хранит имена файлов у себя в таблицах), или даже на специфику файловой системы. Всякие там NTFSы хранят инфу о локализованных именах и/или хвосты длинных имён в реестре. Я ничего против не имею, просто как бы не получился "костыль" - неуниверсальное решение, работающее лишь в частных случаях. Это сообщение отредактировал(а) marcusmae - 26.2.2008, 17:18 -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
vponomarov |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 11.8.2007 Где: Киев Репутация: 4 Всего: 12 |
именно это и делает зловредная функция:
т.е. проблема возникает на стадии записи имен файлов во "внутренние таблицы архива". я не утверждаю, что указанная библиотека поступает так же. Повторюсь еще раз: с данной проблемой я столкнулся разбирая пример МСДНа. Но есть подозрение, что в ICSharpCode.SharpZipLib.Zip делают примерно тоже. |
||||
|
|||||
CYBERDREAM |
|
|||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: 11 Всего: 28 |
Спасибо за содействие. Внутри файлов все без проблем, а вот наименования страдают.
Вот собственно класс, которым осуществляю архивацию:
Пока что ничего путного не получилось, вечером пострадаю. -------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
|||
|
||||
vponomarov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 11.8.2007 Где: Киев Репутация: 4 Всего: 12 |
проблему, по-моему, нужно искать внутри одного из этих методов:
|
|||
|
||||
Sherlock |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 9.5.2007 Репутация: нет Всего: нет |
Да, я тоже думаю, что надо покопаться в самой библиотеке, исходники я так понял есть...
|
|||
|
||||
andrey_pro |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 21.9.2007 Репутация: нет Всего: нет |
Хочу поднять тему!
Тоже столкнулся с такой проблемой. Архивирую файлы. В именах файллв встречаются символы « и ». При архивировании они непонятно почему заменяются на символя < и >. Сами русские буквы остаются в нормальном виде. В коде: ZipConstants.DefaultCodePage = 866 Кто нибудь с этим сталкивался? |
|||
|
||||
uranpro |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 571 Регистрация: 7.5.2008 Где: Moscow city Репутация: 1 Всего: 1 |
из сорца
ZipOutputStream.PutNextEntry
ZipConstants.ConvertToArray
-------------------- I want a perfect soul |
||||
|
|||||
andrey_pro |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 21.9.2007 Репутация: нет Всего: нет |
в сорцах пробывал менять метод ZipConstants.ConvertToArray
изменял кодировку, но если ставить кодировку не 866 то вместо русских букв - абракабра |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |