Nano Hash - криптовалюты, майнинг, программирование

Проблема с набором символов в ZipEntry.getName()

в моем проекте у меня есть функция загрузки zip.

когда пользователь загружает любой zip, моя система извлекает этот файл и отображает структуру папок для пользователя.

если zip-файл содержит файл с именем, например Õ.txt, то он будет отображаться как O.txt.

ZipFile zipFile = new ZipFile(filePath, Charset.forName("UTF8"));
Enumeration entries = zipFile.entries();
while(entries.hasMoreElements())
{

ZipEntry entry = (ZipEntry)entries.nextElement();
System.out.println(entry.getName());

}

выше мой код для чтения почтового индекса.

теперь, когда я пытаюсь получить имя записи, он дает мне O.txt вместо Õ.txt.

я проверил этот код с JDK 7, но с тем же результатом.

Я также пробовал разные типы кодирования, такие как CP437, IBM437, ISO-8859-1 и ISO-8859-1, но результат не изменился.

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

Спасибо и с уважением Ятин

06.08.2012

  • Ятин, я считаю, что java правильно читает это имя файла, но консоль, на которой вы видите вывод, не поддерживает символы юникода. Если вы отлаживаете код, вы видите правильное имя? 06.08.2012
  • Привет, да, я тоже видел это через отладчик. спасибо и с уважением монту в бода 06.08.2012
  • Вы пробовали кодировку Cp1252? Он работает с библиотекой ApacheCommons-compress, которую я использую в JDK6 stackoverflow.com/a/20523390/185565 11.12.2013

Ответы:


1

Кажется, что-то не так с вашей средой и не обязательно с тем, как вы получаете доступ к ZIP-файлу. Вот контрольный список:

  • Действительно ли ZIP-файл содержит запись в кодировке UTF-8 с таким именем? Используйте для проверки такой инструмент, как 7-Zip.
  • Использует ли JVM правильный набор символов? Проверьте системное свойство file.encoding.
  • Соответствует ли кодировка вашего выходного терминала/окна этому параметру?

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

06.08.2012
  • мой вопрос, как я могу узнать кодировку zip-файла? если создать zip-файл с помощью 7zip и загрузить этот файл в мою систему, тогда он будет работать нормально... не могли бы вы подсказать, что мне делать, если zip-файл создан с помощью каких-либо инструментов? С уважением 06.08.2012
  • Для ZIP-файлов допустимы только две кодировки: CP437 (стандартная по соглашению) и UTF-8 (стандартная по спецификации). То, что используется, зависит от инструмента, который создал ZIP-файл - не все делают это правильно. 7-zip должен работать нормально. До JSE 7 Java делала это неправильно (всегда использовала UTF-8, но не устанавливала соответствующий битовый флаг в файле). Дополнительные сведения см. в Приложении D к Спецификации формата ZIP-файла по адресу pkware.com/documents/casestudies. /APPNOTE.TXT 06.08.2012
  • Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..