Zip, кодировка, XML, еще раз кодировка
Задачка есть смешная. Читаем FB2 из ZIP'а. Итого:
1. Есть ZIP, в нем возможен файл (я считаю, что он один), имя этогог файла может быть по-крякозяблясски. Опытным путем выяснено, что кодировка IBM866 (!). Стандартный ZipFile такое не жрет, приходится искать что-то другое. Например его же, но из Ant'а выдранного. Этот умный, ему можно сказать, что имена файлов - в такой-то кодировке. Если считать, что все они в IBM866 (хехе) - уже гут, если предположить, что кодировка может быть разная - это место схождения ног номер раз.
2. В ентом ZIP'е живет FB2, который - суть просто XML. И ентот гад тоже может быть в любой кодировке. Я бы мог бы (так собственно и делаю) открыть ентот файл, прочитать там что-то до "?>", закрыть файл, открыть его снова (mark/reset зверек, кушающий кодирвки - не переваривает), и дальше читать XML (я его читаю stream-like API из Javolution. Оччень удобно).
Внимание, вопрос!
Первое - есть ли возможность понять, в какой кодировке имена файлов в зипе? Или чорт с ней, с кодировкой - дайте мне InputStream на этот единственный файл из зипа, мне абсолютно все-равно, как оно зовется.
Второе - можно ли у InputStreamReader'а на лету поменять кодировку чтения InputStream'а? Очень как-то некрасиво два раза поток открывать. Хотя на крайний случай и так сойдет.
Спасибо за внимание, извините за присутствие. :)
1. Есть ZIP, в нем возможен файл (я считаю, что он один), имя этогог файла может быть по-крякозяблясски. Опытным путем выяснено, что кодировка IBM866 (!). Стандартный ZipFile такое не жрет, приходится искать что-то другое. Например его же, но из Ant'а выдранного. Этот умный, ему можно сказать, что имена файлов - в такой-то кодировке. Если считать, что все они в IBM866 (хехе) - уже гут, если предположить, что кодировка может быть разная - это место схождения ног номер раз.
2. В ентом ZIP'е живет FB2, который - суть просто XML. И ентот гад тоже может быть в любой кодировке. Я бы мог бы (так собственно и делаю) открыть ентот файл, прочитать там что-то до "?>", закрыть файл, открыть его снова (mark/reset зверек, кушающий кодирвки - не переваривает), и дальше читать XML (я его читаю stream-like API из Javolution. Оччень удобно).
Внимание, вопрос!
Первое - есть ли возможность понять, в какой кодировке имена файлов в зипе? Или чорт с ней, с кодировкой - дайте мне InputStream на этот единственный файл из зипа, мне абсолютно все-равно, как оно зовется.
Второе - можно ли у InputStreamReader'а на лету поменять кодировку чтения InputStream'а? Очень как-то некрасиво два раза поток открывать. Хотя на крайний случай и так сойдет.
Спасибо за внимание, извините за присутствие. :)
