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

Chen Liang liach at openjdk.org
Thu May 22 18:29:51 UTC 2025


On Thu, 22 May 2025 12:04:12 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.
>
> Jan Lahoda has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Use stdin.encoding to read from System.in.

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

> 114:             FORWARD_SYSTEM_PROPERTIES.forEach(
> 115:                     prop -> augmentedremoteVMOptions.add("-D" + prop + "=" +
> 116:                                                          System.getProperty(prop)));

Should we add a comment that these properties are always present?

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

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


More information about the kulla-dev mailing list