currently I’m desperately trying to write german umlauts, read from the console, into a utf8 encoded text file on windows 7.
Here is the code to setup the scanner:
Scanner scanner = new Scanner(System.in, "UTF8");
Here is the code to read the string:
String s = scanner.nextLine();
Here is the code to write into a file:
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(this.targetFile), "UTF8");
osw.write(s);
Unfortunately, instead of example “überraschung” the so written file is encoded in utf8 but will not display the umlaut. What to do?
Your console probably is not UTF-8, so when you do
new Scanner(System.in, "UTF8");you are creating a scanner with the wrong encoding, and your umlauts are lost when you try to read lines from the console.You may want to use
chcpon a console prompt to check what code page is being used.In fact, you might not need to specify an encoding at all. If you just create the scanner as
new Scanner(System.in), the default platform encoding should be used.