Polskie znaki
Dziwne to jest dla mnie ale nie da się wydrukować standardowo polskich znaków w windowsie (ółśćźżń). Gdzieś przeczytałem że wystarczy skompilować program uwzględniając odpowednią stronę kodową (Cp852) np w taki sposób:
javac -g -encoding "Cp852" plik.java
Fajnie, ale jakoś mi to nie działało (może u kogoś zadziała). W każdym razie jest inny sposób o osiągnięcie celu. Można zrobić to w kodzie programu i tam ustawiając odpowiednią stronę kodową. Wystarczy stworzyć własny strumień wyjściowy, ustawić mu stronę kodową taką jaką chcemy i wtedy do niego pisać :) A teraz jak to zrobić:
KONIEC ;)
javac -g -encoding "Cp852" plik.java
Fajnie, ale jakoś mi to nie działało (może u kogoś zadziała). W każdym razie jest inny sposób o osiągnięcie celu. Można zrobić to w kodzie programu i tam ustawiając odpowiednią stronę kodową. Wystarczy stworzyć własny strumień wyjściowy, ustawić mu stronę kodową taką jaką chcemy i wtedy do niego pisać :) A teraz jak to zrobić:
import java.io.*; class MyPrintStream{ String encoding; // tutaj zmienna która będzie przechowywała naszą stronę kodową // konstruktor który będzie ustawiać wskazaną stronę kodową przy tworzeniu obiektu MyPrintStream(String encoding){ this.encoding=encoding; } void drukuj(String tekst){ try{ //tworzymy własny strumień wyjściowy podawając w jednym //z parametrów ("encoding") nazwę strony kodowej PrintWriter o = new PrintWriter(new OutputStreamWriter(System.out,encoding), true); //i dopiero jego używamy do wypisania tekstu o.println(tekst); }catch (Exception e){ e.printStackTrace(); } } } // przykład użycia powyższej klasy public class Test{ public static void main(String args[]){ //tworzymy obiekt naszej klasy nakazując mu używanie strony kodowej "Cp852" MyPrintStream p = new MyPrintStream("Cp852"); p.drukuj("zażółć gęślą jaźń"); //klasyczny test obsługi polskiego charsetu } }
KONIEC ;)
4 komentarze
a jak mozna zrobic zeby zamiast wyswietlania System.out ten polski strign szedl do pliku ?
Nieprawidłowe nazewnictwo klas. Niezgodne z konwencją przyjętą przez sun:
http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html
@ArTaN, tworząc OutputStreamWriter podajesz zamiast System.out obiekt typu FileOutputStream.