Linuxon problémamentes az magyar ékezetek megjelenítése konzolon, mivel a környezet UTF-8. Magyar nyelvű Windowson azonban Cp1250 (W7 rendszeren tesztelve).
A javac fordítót ezért a -encoding UTF-8 kapcsolóval kell használni.
Geany-ben például:
A fordító parancsot javítsuk így:
javac -encoding UTF-8 "%f"
Ez raszteresen és Lucida Console fonttal is jól működik, jól jeleníti meg a \u00e1 kódokat is.
Ha Windowson bekérünk szöveget, majd kiírjuk fájlba a magyar ékezetes szövegek hibásan jelenhetnek meg. Bekérésnél jelezzük ha a terminál karakterkódolása nem utf-8.
Windows terminál kódolása:
import java.io.FileWriter; import java.nio.charset.Charset; import java.util.Scanner; public class App { public static void main(String[] args) throws Exception { String os = System.getProperty("os.name").toLowerCase(); String charsetName = "utf-8"; if(os.contains("win")) { charsetName = "cp1250"; } Scanner sc = new Scanner(System.in, charsetName); System.out.print("Név: "); String name = sc.nextLine(); sc.close(); // A FileWriter() ilyen konstruktora 11 Java verziótól elérhető: FileWriter fw = new FileWriter("adat.txt", Charset.forName("utf-8"), true); fw.write(name); fw.write("\n"); fw.close(); } }
A példában használt FileWriter() konstruktor a 11 Java verziótól érhető el.
Szintaxisa:
public FileWriter(File file, Charset charset, boolean append) throws IOException