Вывод в кодировке 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 указал на то, что я забыл... исправил мой ответ.