Java Cygwin编码困难
不确定这是否是编程问题。我开始怀疑。。。但后来我在Windows控制台中运行了有问题的Java程序(可执行jar),而不是在Cygwin控制台中运行。。。它运行良好:输出重音良好,重音输入接受良好。因此,以下内容仅适用于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”随后被
System.out
)时,会打印一种“哈希框”。我在这里看到了关于这一点的另一个问题,但没有给出解决方案或适当的解释
当我输入重音字符时,这些字符被错误地读入(JavaSystem.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
doreadLine
。。。