Вывод в кодировке UTF-8 в Java

У меня проблемы с выходным файлом из программы, использующей eclipse.i я установил eclipse в UTF-8 и

 System.getProperty("file.encoding") 

я получаю UTF-8. я запустил мою прогу через опцию запуска eclipse, и вывод (текстовый файл) закодирован в UTF-8. но когда я сжал исходный код в файл jar, файл вывода показывает ошибку в некоторых из алфавит, такой как "что такое с этим diff при запуске проги в файле eclipse и frm jar?" и нужно ли мне указывать вывод, который будет закодирован в utf-8, в моем исходном коде?pls help.

Справка от @dacwe действительно дала желаемый результат. Но могу ли я узнать, как мне запустить мой исполняемый файл.jar вне командной строки? Как можно -Dfile.encoding=UTF-8?

@dacwe: я попытался изменить свой исходный код на

 BufferedWriter bout  = new java.io.BufferedWriter(new java.io.OutputStreamWriter(
                new java.io.FileOutputStream(filename), "UTF-8"));

но вывод все еще не закодирован правильно. Что-то я здесь скучаю?

2 ответа

После некоторого серьезного обсуждения в ответе @Dave G!

С помощью java -Dfile.encoding=UTF-8 -jar your-jar-file.jar работает.

Обновление вашего кода в соответствии с предложением @Dave G (и вашим редактированием) должно работать.

  • Вы действительно переупаковали свою банку?
  • Ты звонишь close() на bout? (например, возможно, ваш файл не обновлен)

Вот полный пример, который может вам помочь:

public static void main(String... args) throws Exception {
    PrintWriter out = new PrintWriter(new File("hello.txt"), "UTF-8");
    out.print("written in utf-8");
    out.close();
}

При запуске из файла JAR вы устанавливаете свойство file.encoding с помощью -Dfile.encoding? Если нет, вы можете либо

а) откройте поток явно с этой кодировкой. для этого вам нужно создать OutputStream, а затем обернуть его в OutputStreamWriter, явно указав кодировку символов.

или же

б) установите свойство первым в вашем основном методе, используя System.setProperty("file.endcoding");

примечание @dacwe указал на то, что я забыл... исправил мой ответ.

Другие вопросы по тегам