Cygwin 编码困难

Cygwin encoding difficulties

不确定这是否是编程问题。我开始怀疑是这样......但后来我 运行 Java 有问题的程序(可执行 jar)在 Windows 控制台而不是 Cygwin 控制台中......它 运行 很好:输出口音很好,带口音的输入也很好。所以以下内容仅适用于 Cygwin 控制台。

我正在处理一些法语文本。当打印重音字符 (System.out) 时,会打印一种 "hashed box"。我在这里看到另一个问题,但没有给出解决方案或适当的解释。

当我输入重音字符时,这些字符被错误地读入 (Java System.in),例如"bénéfice" 然后打印出来(在正确处理编码的日志中)为 "bénéfice".

令人费解的(也许)是我能够在控制台中输入 "bénéfice"。据我了解,Deja Vu Sans Mono 字体旨在很好地处理 Unicode。所以...这可能与 Java System.inSystem.out 流有关吗???

为避免疑义,这是 Windows 平台上的 Cygwin(有人在非 Windows OS 平台上使用 Cygwin 吗?)。

我尝试通过选项 --> 文本更改 "Locale" 和字符集和字体。这些框没有任何变化。 目前设置为默认设置:
字体:Deja Vu Sans Mono
语言环境:en_GB
字符集:UTF-8

在命令提示符下,当我去

$ locale

我明白了

LANG=en_GB.UTF-8
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_ALL=

有人知道我该怎么做吗?

在此感谢 Paul 和 Zhong Yu 的回答。

要打印到 Cygwin,请执行以下操作:

PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.print( outputString );

要从 Cygwin 读取数据,请执行以下操作:

BufferedReader br = new BufferedReader( new InputStreamReader(System.in, "UTF-8") );
String nextInputLine = br.readLine();

有点奇怪,在重新Cygwin之前没有提出这个问题。