System.out.println med svenska tecken

Det är ju lite märkligt att man år 2018 fortfarande inte har stöd för att känna av vilken codepage som används av System.out i Java….

För att skriva ut svenska tecken, eller andra specialtecken, så måste man sätta om vilken codepage som ska användas om du kör ett java program i ”kommando prompten”.

 

För att sätta om till rätt codepage så lägger jag in detta bland det första jag gör i min main-funktion:

 System.setOut(new PrintStream(System.out,true,"Cp850"));

Detta gör att svenska tecken (eller andra nationella tecken) visas korrekt i windows-konsollen.

 

Sedan Java 1.6 kan man iofs använda System.console().writer().println , men jag tycker att det är lite bökigare, eftersom det kräver att man frångår det som varit defaktostandard för konsol-program i sååååå många år (kan ju potentiellt vara många System.out.println-rader som man måste ändra. Dessutom så är det stor risk att man får NPE (Null Pointer Exception) om man inte kör programmet i en konsoll, eftersom System.console() då returnerar null