gpt4 book ai didi

java - Cygwin 编码困难

转载 作者:行者123 更新时间:2023-11-30 07:56:39 25 4
gpt4 key购买 nike

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

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

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

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

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

我尝试通过选项 --> 文本更改“区域设置”、字符集和字体。这些框没有任何变化。目前设置为默认设置:
字体: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之前没有出现这个问题有点奇怪。

关于java - Cygwin 编码困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41945010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com