<i18n dev> RFR: 8274544: Langtools command's usage were garbled on Japanese Windows [v3]
Ichiroh Takiguchi
itakiguchi at openjdk.java.net
Thu Oct 21 16:24:03 UTC 2021
On Tue, 19 Oct 2021 01:26:35 GMT, Jonathan Gibbons <jjg at openjdk.org> wrote:
>> Ichiroh Takiguchi has updated the pull request incrementally with one additional commit since the last revision:
>>
>> 8274544: Langtools command's usage were garbled on Japanese Windows
>
> This is pretty ugly code to be replicating so many times.
>
> What if the tools have been run in an environment where `System.out` and `System.err` have already been redirected in some manner, with `System.setOut` or `System.setErr`? You should not assume that `System.out` and `System.err` will always refer to the console.
@jonathan-gibbons I appreciate your comment.
I'd like to confirm something.
> This is pretty ugly code to be replicating so many times.
> What if the tools have been run in an environment where `System.out` and `System.err` have already been redirected in some manner, with `System.setOut` or `System.setErr`? You should not assume that `System.out` and `System.err` will always refer to the console.
I was confused since the fixed code did not call System.out/System.err directly.
I tried following code on Japanese Windows.
import java.io.*;
import java.nio.charset.*;
public class OutputCheck {
public static void main(String[] args) throws Exception {
String s = "\u3042";
System.out.println("[1]:"+s);
PrintStream ps = System.out;
System.setOut(new PrintStream(System.out));
System.out.println("[2]:"+s);
ps.println("[3]:"+s);
System.setOut(new PrintStream(System.out, true, Charset.forName(System.getProperty("native.encoding"))));
System.out.println("[4]:"+s);
}
}
Output is:
> jdk-18-b14\bin\java OutputCheck.java
[1]:あ
[2]:縺・
[3]:あ
[4]:あ
[2] refers default charset (UTF-8)
[3] is same as [1]
[4] specifies native.encoding system encoding
Could you explain more detail ?
-------------
PR: https://git.openjdk.java.net/jdk/pull/5771
More information about the i18n-dev
mailing list