RFR: 8276970: Default charset for PrintWriter that wraps PrintStream [v3]
Naoto Sato
naoto at openjdk.java.net
Thu Nov 18 00:14:43 UTC 2021
On Tue, 16 Nov 2021 21:49:55 GMT, Naoto Sato <naoto at openjdk.org> wrote:
> BTW, I still observe on Windows (system locale=ja-JP):
>
> ```
> D:\projects\jdk\git\jdk>.\build\windows-x64\jdk\bin\jshell -J-Duser.language=ja
> | JShellへようこそ -- バージョン18-internal
> | 概要については、次を入力してください: /help intro
>
> jshell> System.out.println("\u3042")
> 縺・
> ```
>
> This needs to be separately addressed in https://bugs.openjdk.java.net/browse/JDK-8274784
The following diff seems to fix the garbled char issue above:
$ git diff
diff --git a/src/jdk.jshell/share/classes/jdk/jshell/execution/RemoteExecutionControl.java b/src/jdk.jshell/share/classes/jdk/jshell/execution/RemoteExecutionControl.java
index 810e80acf47..be0b9dcb0c3 100644
--- a/src/jdk.jshell/share/classes/jdk/jshell/execution/RemoteExecutionControl.java
+++ b/src/jdk.jshell/share/classes/jdk/jshell/execution/RemoteExecutionControl.java
@@ -30,6 +30,7 @@ import java.io.PrintStream;
import java.lang.reflect.Method;
import java.net.Socket;
+import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Consumer;
@@ -63,8 +64,8 @@ public class RemoteExecutionControl extends DirectExecutionControl implements Ex
InputStream inStream = socket.getInputStream();
OutputStream outStream = socket.getOutputStream();
Map<String, Consumer<OutputStream>> outputs = new HashMap<>();
- outputs.put("out", st -> System.setOut(new PrintStream(st, true)));
- outputs.put("err", st -> System.setErr(new PrintStream(st, true)));
+ outputs.put("out", st -> System.setOut(new PrintStream(st, true, Charset.forName(System.getProperty("native.encoding")))));
+ outputs.put("err", st -> System.setErr(new PrintStream(st, true, Charset.forName(System.getProperty("native.encoding")))));
Map<String, Consumer<InputStream>> input = new HashMap<>();
input.put("in", System::setIn);
forwardExecutionControlAndIO(new RemoteExecutionControl(), inStream, outStream, outputs, input);
-------------
PR: https://git.openjdk.java.net/jdk/pull/6401
More information about the core-libs-dev
mailing list