RFR: 8274544: Langtools command's usage were garbled on Japanese Windows [v5]
Ichiroh Takiguchi
itakiguchi at openjdk.java.net
Sun Nov 14 16:48:39 UTC 2021
On Wed, 10 Nov 2021 21:19:30 GMT, Naoto Sato <naoto at openjdk.org> wrote:
>> Ichiroh Takiguchi has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains five commits:
>>
>> - 8274544: Langtools command's usage were garbled on Japanese Windows
>> - 8274544: Langtools command's usage were garbled on Japanese Windows
>> - 8274544: Langtools command's usage were garbled on Japanese Windows
>> - 8274544: Langtools command's usage were garbled on Japanese Windows
>> - Langtools command's usage were grabled on Japanese Windows
>
> Good suggestions. Filed a JBS issue: https://bugs.openjdk.java.net/browse/JDK-8276970
Hello @naotoj .
For PrintStream.getCharset(), following changes may be required.
+++ src/java.base/share/classes/java/io/OutputStreamWriter.java
+ Charset getCharset() {
+ return se.getCharset();
+ }
+++ src/java.base/share/classes/java/io/PrintStream.java
+ public Charset getCharset() {
+ return charOut.getCharset();
+ }
+++ src/java.base/share/classes/sun/nio/cs/StreamEncoder.java
+ public Charset getCharset() {
+ return cs;
+ }
For javac code, we may not use PrintStream.getCharset() directly because javac code is compiled by boot compiler.
We need to use reflection, like:
+++ src/jdk.compiler/share/classes/com/sun/tools/javac/util/Log.java
+ private static Charset getCharset(PrintStream ps) {
+ try {
+ Method getCharset = PrintStream.class.getDeclaredMethod("getCharset");
+ return (Charset)getCharset.invoke(ps);
+ } catch (Exception e) {
+ return Charset.defaultCharset();
+ }
+ }
If we add following constructors against PrintWriter, we just change javap and jshell code.
But I cannot evaluate this code changes.
+++ src/java.base/share/classes/java/io/PrintWriter.java
+ public PrintWriter(PrintStream ps) {
+ this((OutputStream)ps, false, ps.getCharset());
+ }
+ public PrintWriter(PrintStream ps, boolean autoFlush) {
+ this((OutputStream)ps, autoFlush, ps.getCharset());
+ }
I really appreciate if you handle this kind of code change via JEP-400.
-------------
PR: https://git.openjdk.java.net/jdk/pull/5771
More information about the compiler-dev
mailing list