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ć:
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 ;)
@ArTaN, tworząc OutputStreamWriter podajesz zamiast System.out obiekt typu FileOutputStream.
a jak mozna zrobic zeby zamiast wyswietlania System.out ten polski strign szedl do pliku ?
ta... nawyk z C. sorry
Nieprawidłowe nazewnictwo klas. Niezgodne z konwencją przyjętą przez sun:
http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html