Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Cygwin编码困难_Java_Encoding_Cygwin_System.out_System.in - Fatal编程技术网

Java Cygwin编码困难

Java Cygwin编码困难,java,encoding,cygwin,system.out,system.in,Java,Encoding,Cygwin,System.out,System.in,不确定这是否是编程问题。我开始怀疑。。。但后来我在Windows控制台中运行了有问题的Java程序(可执行jar),而不是在Cygwin控制台中运行。。。它运行良好:输出重音良好,重音输入接受良好。因此,以下内容仅适用于Cygwin控制台 我正在处理一些法语文本。打印重音字符(System.out)时,会打印一种“哈希框”。我在这里看到了关于这一点的另一个问题,但没有给出解决方案或适当的解释 当我输入重音字符时,这些字符被错误地读入(JavaSystem.in),例如,“bénéfice”随后被

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

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

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

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

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

我尝试过通过“选项-->文本”更改“区域设置”和字符集以及字体。没有什么能改变这些盒子。 目前设置为默认设置:
字体:似曾相识无单声道
地区:en_GB
字符集:UTF-8

在命令提示下,当我转到

$ locale
我明白了


有人知道我该怎么做吗?

谢谢保罗和钟宇的回答

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

PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.print( outputString );
BufferedReader br = new BufferedReader( new InputStreamReader(System.in, "UTF-8") );
String nextInputLine = br.readLine();
要阅读Cygwin的文章,请执行以下操作:

PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.print( outputString );
BufferedReader br = new BufferedReader( new InputStreamReader(System.in, "UTF-8") );
String nextInputLine = br.readLine();

有点惊讶,在重新安装Cygwin之前,这个问题还没有出现。

Cygwin当然只适用于Windows。请注意,Java不是cygwin应用程序,因此它可能会忽略cygwin语言环境设置。谢谢。所以实际上,这在字节和编码方面意味着什么,以及可能的解决方案?有没有办法让Java以特定的编码发送流?我承认,编码一直让我困惑不已,这很可能只是java实例和cygwin控制台使用的字符集不匹配。可能值得检查java实例使用的字符编码。可能对解决此问题也很有帮助。在中,您使用了什么代码从
系统中读取字符串?@Paul great!您已经解决了一半的问题:
PrintStream out=newprintstream(System.out,true,“UTF-8”)。现在,我正在尝试解决如何使用正确的编码获得一个
BufferedReader
do
readLine
。。。