вывод в кодировке UTF-8 в Java - PullRequest
11 голосов
/ 18 июля 2011

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

 System.getProperty("file.encoding") 

я получу UTF-8.i запустил мою программу с помощью команды 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 ]

14 голосов
/ 18 июля 2011

После серьезного обсуждения в ответе @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();
}
1 голос
/ 18 июля 2011

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

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

или

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...