Java jar file utf 8

Package java.util.jar

Provides classes for reading and writing the JAR (Java ARchive) file format, which is based on the standard ZIP file format with an optional manifest file.

The packer engine applies various transformations to the input JAR file, making the pack stream highly compressible by a compressor such as gzip or zip.

The JarFile class is used to read the contents of a jar file from any file that can be opened with java.io.RandomAccessFile .

Package java.util.jar Description

Provides classes for reading and writing the JAR (Java ARchive) file format, which is based on the standard ZIP file format with an optional manifest file. The manifest stores meta-information about the JAR file contents and is also used for signing JAR files.

Package Specification

  • Info-ZIP file format — The JAR format is based on the Info-ZIP file format. See java.util.zip package description. In JAR files, all file names must be encoded in the UTF-8 encoding.
  • Manifest and Signature Specification — The manifest format specification.

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2023, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.

Читайте также:  Питон не закрывать консоль

Источник

Как заставить jar использовать (или jvm, в котором работает jar) utf-8 вместо системной кодировки по умолчанию

Моя стандартная кодировка Windows — это GBK, а мой Eclipse полностью закодирован в utf-8.
Таким образом, приложение, которое хорошо работает в моем Eclipse, выходит из строя, потому что слова становятся нечитабельными при экспорте в виде файла jar.
Я должен написать следующую строку в .bat файле для запуска приложения

 start java -Dfile.encoding=utf-8 -jar xxx.jar 

Теперь мой вопрос в том, что я могу написать что-то в исходном коде, чтобы установить использование приложения (или jvm работает в) utf-8 вместо кодировки по умолчанию.

2 ответа

Когда вы открываете файл для чтения, вам нужно явно указать кодировку, которую вы хотите использовать для чтения файла:

Reader r = new InputStreamReader(new FileInputStream("myfile"), StandardCharsets.UTF_8); 

Тогда значение кодировки платформы по умолчанию (которую вы можете изменить с помощью -Dfile.encoding ) больше не имеет значения.

Обычно я рекомендую всегда указывать кодировку явно для любой операции, которая зависит от стандартной локали, такой как символьный ввод-вывод. Многие методы Java API по умолчанию используют платформенную кодировку, которую я считаю плохим дизайном, потому что часто кодирование платформы не является правильным, а также может внезапно меняться (если пользователь, например, переключает локаль ОС), разбивая ваше приложение.

Так что просто скажите, какую кодировку вы хотите.

Есть некоторые случаи, когда кодирование платформы является правильным (например, при открытии файла, который только что создал пользователь для вас), но они довольно редки.

java.nio.charset.StandardCharsets был введен в Java 1.7. Для более старых версий Java вам нужно указать входную кодировку как строку (ть). Список возможных кодировок зависит от JVM, но каждый JVM, по крайней мере, имеет:

US-ASCII, ISO-8859-1, UTF-8, UTF-16BE, UTF-16LE, UTF-16.

БЛАГОДАРЮ ВАС! Прежде чем использовать -Dfile.encoding , я попробовал new String(bytes[],»UTF8″); возможно, не использовал его везде, так что все еще не работал. Только сейчас я попробовал еще раз и преуспел.

Там другой путь. Если вы уверены, что хотите кодировать ввод и вывод, вы можете сохранить настройки перед компиляцией файла jar.

Перейти к проекту → Свойства → Запустить → Параметры и тип виртуальной машины -Dfile. encoding=UTF-8

После этого все кодируется в UTF-8 каждый раз, когда запускается Java VM.

(Я думаю, что Eclipse предлагает такую ​​же возможность. Если нет, просто выберите Google для параметров VM.)

Изображение 137306

Ещё вопросы

  • 0 Обновление с объединением с условиями из другой таблицы [MySQL]
  • 0 Почему ByRef выдает исключение при передаче в неуправляемый код?
  • 1 Bluetooth на 2.0+
  • 0 Как растянуть фоновое изображение содержимого на весь экран?
  • 1 Статическое изображение Google Map с полигонами из координат
  • 1 Как заставить сеть Keras не выводить все 1с
  • 1 Uncaught Ошибка: process.binding не поддерживается (browserify + selenium-webdriver)
  • 0 Процесс сценария Page.Client после события нажатия кнопки
  • 0 Как я могу заполнить массив в datagridview?
  • 1 Ошибка конфигурации приложения службы WCF
  • 0 SFML возвращает окно в другой класс через конструктор, не работающий
  • 0 Angularjs отображать HTML в специальных символах
  • 0 Опция пользовательского пейджера Bxslider
  • 1 Интернационализация с весны MVC
  • 1 Как проверить Http / 2 через ohttp?
  • 0 Проверка формы не работает для простого поля электронной почты
  • 0 Слайд-шоу изображений Jquery не начинается с начала
  • 0 Получить несколько атрибутов из одного узла
  • 1 Возвратите атрибут отношения в свободном запросе Cypher
  • 1 Измените время сервера на местное время, отправленное Facebook
  • 0 Отладка без отладочных символов
  • 0 Почему статическая переменная класса не может быть размещена в стеке?
  • 1 OData возвращает массив вместо JSON — Как конвертировать?
  • 0 Как передать пользовательский ввод в программу COBOL и сохранить его в таблице SQL?
  • 0 Передача функции constexpr для использования во время компиляции
  • 0 SHOW CREATE PROCEDURE имя_процесса не отображает содержание процедуры
  • 1 Не могу загрузить файл в мое хранилище Firebase — ошибка 403 Запрещено
  • 0 JQUERY / PLUGIN вызывают функцию извне / аргументы
  • 0 Что передается с привязкой в JS?
  • 1 отображение изображения в столбце вида сетки на странице aspx с условием
  • 0 $ watch или проблема с привязкой к модели?
  • 1 Аварийный запуск native-android с помощью приложения «Task: app: compileDebugJavaWithJavac FAILED» завершился неудачей. После установки response-native-fbsdk
  • 1 Как я могу получить путь к файлу на сырых ресурсах в Android Studio?
  • 1 java.lang.NoSuchFieldError: имя во время выполнения в спящем проекте
  • 0 Rails не может отображать изображение из угловой вставленной переменной
  • 1 BayazitDecomposer недоступен при обновлении с Farseer 3.3.1 до Farseer 3.5
  • 1 каковы различия между различными способами создания экземпляра JAVA_HOME в Ubuntu
  • 1 Как использовать + = (Добавить И) с пониманием списка
  • 0 CryptStringToBinary API поведение
  • 1 Получить индекс значения
  • 0 Свиток падает, когда я использую сортируемый
  • 0 Порядок инициализации импорта ES6 и угловых контроллеров
  • 1 Функция d3.queue.await не вызывается
  • 1 Связывание метки с переменной
  • 0 Элементы становятся размытыми в Flexslider
  • 1 Задача «ConvertResourcesCases» неожиданно завершилась неудачей. Xamarin Android build
  • 1 Графический интерфейс Java, отображающий предыдущее окно
  • 0 Как загрузить изображения на разные URL с помощью ckeditor?
  • 1 Moq — Как шагнуть в реальный метод?
  • 0 Как мне сопоставить динамический маршрут в базе данных?

Источник

Не могу разобраться с кодировкой в jar-файле

Программа в ИДЕЕ работает нормально. Пытаюсь собрать jar. Не работает. Прописала тестовую строку в самом начале:

1 2 3 4 5 6 7 8 9 10 11 12
public static void main(String[] args) { JFrame.setDefaultLookAndFeelDecorated(true); SwingUtilities.invokeLater(() -> { try { UIManager.setLookAndFeel(new SubstanceGraphiteChalkLookAndFeel()); } catch (Exception e) { System.out.println("Failed to initialize"); } System.out.println("тестовая строка"); // new UIGeneral(); }); }

Собираю проект в jar-файл, запускаю, тестовая строка в Git Bash выглядит так: ▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒ (символы 9618 в кодировке Unicode)

В настройках везде прописан UTF-8.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
 version="1.0" encoding="UTF-8"?>  xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> >4.0.0 > > >UTF-8 > > >home.alicesmagic.mw > >make-words > >1.0-SNAPSHOT > > > >junit > >junit > >4.12 > >test > > > >org.pushing-pixels > >radiance-substance > >2.5.1 > > > >org.pushing-pixels > >radiance-substance-extras > >2.5.1 > > > > > > >org.apache.maven.plugins > >maven-compiler-plugin > >3.8.1 > > >13 > >13 > > > > >maven-assembly-plugin > > > >package > > >single > > > > > > > >true > >home.alicesmagic.mw.MainApplication > > > > >jar-with-dependencies > > > > > > >

Помогите, пожалуйста! Подскажите, в чем может быть проблема?

Не могу разобраться с кодировкой
Доброго времени суток Помогите пожалуйста разобраться с проблемой Суть такая. Есть .txt файл в.

Помогите разобраться с jar
Получается такая проблема. Написал апплет, всего около 20 файлов половина из них картинки. Пакую в.

С кодировкой базы данных и кодировкой сайтом и кодировкой файла разобраться не могу
С кодировкой базы данных и сайтом файлом разобраться не могу. Я на своем сайте вывожу данные из.

Эксперт Java

Эксперт PythonЭксперт Java

alicesmagic, просто интересно — а зачем запускаешь в Git Bash? Поставь Cmder — очень хорошая оболочка, рекомендую. Только ее юзал, когда под вендой сидел.

ЦитатаСообщение от xoraxax Посмотреть сообщение

В настройках ИДЕИ File Encodings (скрнишот). А в настройках терминала вообще про кодировку не вижу ничего.

ЦитатаСообщение от Gungala Посмотреть сообщение

Это в какой раздел нужно вставить? Если в (между седьмой и восьмой строчкой в моем помнике вставила) , то никак не помогло. Проблема осталась.

ЦитатаСообщение от iSmokeJC Посмотреть сообщение

Знать бы зачем Я пока в этой области чужими мозгами думаю. Первые робкие шаги. Когда вот пойму, зачем нужны эти Git Bash и Cmder, тогда уж и буду выбирать, который из них лучше.
Это первая попытка создать исполняемый файл программы. Git установлен, поэтому, наверное, его и юзаю.

Проблема, как я поняла, не в конечной кодировке, а в несовпадении кодировок вводимого слова, и словаря, в котором ищутся слова, состоящие из букв введенного слова. Словарь загружается из файла txt, который тоже сохранен в кодировке utf-8.
Однако, я добавила тестовый консольный вывод одного слова из словаря и это слово вывелось корректно в отличие от тестовой строки (см.скриншот).
Так как кодировки сравниваемых слов не совпадают, программа в целом ничего не ищет. Проблема в этом.
Вот код загрузки словаря из файла:

1 2 3 4 5 6 7 8 9 10 11 12 13
public TreeSetString> load() { TreeSetString> words = new TreeSet<>(); try { BufferedReader bufferedReader = new BufferedReader( new FileReader(fileName)); String strFile; while ((strFile = bufferedReader.readLine()) != null) words.add(strFile); } catch (IOException ex) { ex.printStackTrace(); } return words; }

Может быть тут что-то изменить, чтобы кодировка словаря совпадала с кодировкой вводимого слова.
Да, кстати, не смотря на то, что тестовая строка отображается некорректно, слово в текстовом поле вводится правильно.

Источник

Оцените статью