Java console charset translation

Login to the console (win), how does charset conversion work?

Code below, non-ascii characters output garbage - InputStreamReader in the example below does not accept charset as an argument.

BufferedReader console = new BufferedReader( new InputStreamReader(System.in));
String inp = console.readLine();
System.out.println(inp.toUpperCase());

Being OS independent, how does Java solve all the different possible encoding configurations regarding console prompt input?

+5
source share
2 answers

In fact, Java does not cope with this problem at all .

, . Windows, Java - - -ascii Windows.

:

  • System.console(), Java 6:

    BufferedReader in = new BufferedReader(System.console().reader());
    BufferedWriter out = new PrintWriter(System.console().writer(), true);
    
    out.println(in.readLine().toUpperCase());
    

    , System.console() null IO, , IDE. .

  • :

    String consoleEncoding = "...";
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in, consoleEncoding));
    BufferedWriter out = new PrintWriter(new OutputStreamWriter(System.in, consoleEncoding), true);
    
    out.println(in.readLine().toUpperCase());
    

    , .

  • file.encoding, , IO , :

    java -Dfile.encoding=... ...
    
+12

1) : :

, , /. Java / JDK: http://docs.oracle.com/javase/1.6/docs/guide/intl/encoding.doc.html. : UTF-8 Java-.

2). : - JAVA- , ?

: - Java , JVM . , java "System" "in/out/err" Java!

java, "System", , JVM. // (.. , System.in, System.out, System.err, RUNTIME ClassLoader, ... Java.

"" ClassLoading , , ( , java Runtime) ) - JVM , .

, , : Java LANGUAGE , JVM , , Java, , , , .

: System, , . , nullInputStream():

http://www.java2s.com/Open-Source/Java-Document/6.0-JDK-Core/lang/java/lang/System.java.htm

+5

All Articles