Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Примечание:

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

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

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

Примечание 2:

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

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

Ответ 2

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

Вот пример для NetBeans.

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

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

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

введите описание изображения здесь