Вывод как кодировка UTF-8 в java
У меня возникла проблема с выходным файлом из программы, использующей eclipse. я установите мое eclipse в UTF-8 и
System.getProperty("file.encoding")
я получаю UTF-8.i, запустил мою prog через eclipse run-option, а вывод (текстовый файл) закодирован в UTF-8., но когда я сжал исходный код в файл jar, выходной файл показывает ошибку в каком-либо алфавите, таком как Ã.what с этим diff при рунизации прога в eclipse и файле frm jar? и мне нужно указать вывод, который должен быть закодирован в utf-8 в моем исходном коде? Справка pls.
help from @dacwe действительно дал желаемый результат. но могу ли я знать, как я могу запустить исполняемый файл .jar за пределами командной строки? Как можно -Dfile.encoding = UTF-8
@dacwe: я попытался изменить исходный код на
BufferedWriter bout = new java.io.BufferedWriter(new java.io.OutputStreamWriter(
new java.io.FileOutputStream(filename), "UTF-8"));
но вывод по-прежнему не закодирован правильно. Все, что я пропустил здесь?
Ответы
Ответ 1
После некоторого серьезного обсуждения в @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();
}
Ответ 2
Когда вы запускаете из JAR файла, вы задаете свойство file.encoding -Dfile.encoding? Если нет, вы можете либо
a) явно открыть поток с помощью этой кодировки. для этого вам нужно будет создать OutputStream и затем обернуть это в OutputStreamWriter, явно указывая кодировку символов.
или
b) установите свойство как первое в своем основном методе, используя System.setProperty( "file.endcoding" );
Забастовкa >
note @dacwe отметил, что я забыл... исправил свой ответ.