Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8356893

Use "stdin.encoding" for reading System.in with InputStreamReader/Scanner

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: P4 P4
    • tbd
    • None
    • core-libs
    • None
    • generic
    • generic

      There are several locations in the JDK source where `System.in` is read with `InputStreamReader`/`Scanner` using the default charset. Replace them with 2-arg constructors with explicit "stdin.encoding". Following locations in the JDK need to be addressed:
      ```
      % grep -r --include="*.java" "new InputStreamReader(System.in)"
      ./test/jdk/java/lang/ProcessHandle/JavaChild.java: try (Reader reader = new InputStreamReader(System.in);
      ./test/jdk/java/lang/ProcessBuilder/Basic.java: int n = new InputStreamReader(System.in).read(buf,0,buf.length);
      ./test/jdk/java/nio/charset/spi/CharsetTest.java: + new InputStreamReader(System.in).getEncoding());
      ./test/jdk/javax/security/auth/login/LoginContext/DefaultHandlerImpl.java: (new InputStreamReader(System.in))).readLine());
      ./test/jdk/javax/script/MyContext.java: reader = new InputStreamReader(System.in);
      ./test/jdk/com/sun/tools/attach/Application.java: try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
      ./test/jdk/com/sun/security/sasl/digest/ClientCallbackHandler.java: (new InputStreamReader(System.in)).readLine();
      ./test/jdk/com/sun/security/sasl/ClientCallbackHandler.java: (new InputStreamReader(System.in)).readLine();
      ./test/jdk/com/sun/jdi/MultiBreakpointsTest.java: final InputStreamReader isr = new InputStreamReader(System.in);
      ./test/hotspot/jtreg/vmTestbase/nsk/jvmti/AttachOnDemand/attach010/attach010Agent00.java: BufferedReader inputStreamReader = new BufferedReader(new InputStreamReader(System.in));
      ./test/hotspot/jtreg/vmTestbase/nsk/share/jpda/BindServer.java: new InputStreamReader(System.in));
      ./make/jdk/src/classes/build/tools/pandocfilter/PandocFilter.java: reader = new InputStreamReader(System.in);
      ./src/java.security.jgss/windows/classes/sun/security/krb5/internal/tools/Ktab.java: new BufferedReader(new InputStreamReader(System.in));
      ./src/java.security.jgss/windows/classes/sun/security/krb5/internal/tools/Ktab.java: new BufferedReader(new InputStreamReader(System.in));
      ./src/jdk.jfr/share/classes/jdk/jfr/internal/jfc/model/UserInterface.java: BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      ./src/utils/src/build/tools/commentchecker/CommentChecker.java: new BufferedReader(new InputStreamReader(System.in));
      ./src/java.base/share/classes/sun/security/tools/keytool/Main.java: in = new BufferedReader(new InputStreamReader(System.in));
      ./src/java.base/share/classes/sun/security/util/ConsoleCallbackHandler.java: (new InputStreamReader(System.in)).readLine();
      ./src/java.base/share/classes/javax/security/auth/callback/CallbackHandler.java: * (new InputStreamReader(System.in))).readLine());
      ./src/java.scripting/share/classes/javax/script/SimpleScriptContext.java: this(new InputStreamReader(System.in),
      ./src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/CLHSDB.java: new BufferedReader(new InputStreamReader(System.in));
      ./src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty/TTY.java: new BufferedReader(new InputStreamReader(System.in));

      ```
      ```
      % grep -r --include="*.java" "new Scanner(System.in)"
      ./test/langtools/jdk/jshell/UserInputTest.java: assertEval("Scanner s = new Scanner(System.in);");
      ./src/jdk.internal.ed/share/classes/jdk/internal/editor/external/ExternalEditor.java: Scanner scanner = new Scanner(System.in);
      ```

            vyazici Volkan Yazici
            naoto Naoto Sato
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: