RFR: 8356245: stdin.encoding and stdout.encoding in jshell don't respect console code pages

Christian Stein cstein at openjdk.org
Tue May 20 13:45:51 UTC 2025


On Tue, 20 May 2025 13:28:27 GMT, Jan Lahoda <jlahoda at openjdk.org> wrote:

> JShell, by default, uses two processes: the main one which compiles snippets, and a remote, that runs them.
> 
> The remote process is not connected to console, and hence its in/out/err encoding will be derived from the platform encoding, while the main process will use encoding derived from the console settings.
> 
> This PR proposes to pass the stdin/out/err encoding from the main process to the remote process. It also has to change the char->byte conversion for System.in to use the `stdin.encoding`, so that the remote process understands it.
> 
> The `InputUITest` requires explicitly setting encoding, as the tests sometimes run with the ASCII encoding, but use Unicode characters, and fail, as the ASCII encoding is not really followed by JShell now.

src/jdk.jshell/share/classes/jdk/jshell/execution/JdiDefaultExecutionControl.java line 73:

> 71: public class JdiDefaultExecutionControl extends JdiExecutionControl {
> 72: 
> 73:     private static final Duration SHUTDOWN_TIMEOUT = Duration.ofSeconds(1);

Nice!

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/25328#discussion_r2098012438


More information about the kulla-dev mailing list