Polskie znaczki na Java console

Wypisywanie polskich znaków (przy pomocy System.out) z programu napisanego w Javie uruchomionego z wiersza poleceń może przyprawić trochę kłopotów. Za globalne ustawienia domyślnego kodowania znaków odpowiada własność systemowa file.encoding ale ustawianie jej podczas działania programu nie wpływa na konsolę. Dzieje się tak dlatego, że System.out jest inicjalizowane strumieniem z domyślnym kodowaniem w kodzie static klasy System a my je zmieniamy znacznie później. Można je zmienić przekazując parametr podczas uruchamiania java, na przykład:

java -Dfile.encoding=Cp852 MojaKlasa

Jeśli nie chcemy zmieniać globalnie domyślnego kodowania a jedynie posługiwać się System.out z polskimi znaczkami możemy ustawić swój strumień wyjściowy skierowany na konsolę, na przykład:

System.setOut(new PrintStream (new FileOutputStream(java.io.FileDescriptor.out), true, "Cp852"));

W powyższych przykładach Cp852 jest kodowaniem konsoli do któego chcę się przystosować. W praktyce trzeba rozpoznać jakie jest kodowanie w systemie w którym chcemy uruchomić swój program.

Zacheusz

Komentarze

Jeden komentarz do “Polskie znaczki na Java console”

  1. Michał on April 8th, 2010 12:23 pm

    Właśnie użyłem, działa. Dzięki.

Chcesz coś napisać?





*