Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.4k views
in Technique[技术] by (71.8m points)

utf 8 - Failing to write german 'umlauts' (äöü) from console to text file with java

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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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 chcp on 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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...