嗨,这是一个简单的问题,尽管我自己也不知道答案...
在法语操作系统上运行的以下代码的输出为

public class FrenchTest {
public static void main(String[] args){
    String[] lines = {"Le résultat est", "Nom de l'hôte"};

    for(String line : lines){
        System.out.println("NOW : " + line);
    }
}
//////////////
c:\share>java FrenchTest
NOW : Le résultat est
NOW : Nom de l'hôte

c:\share>CHCP 65001

c:\share>java FrenchTest
NOW : Le résultat est
NOW : Nom de l'hôte


怎么来的?这种情况的编码要点在哪里,它在英语版本的OS上工作正常!

最佳答案

如果您更改代码页,然后告诉java以UTF-8输出,它应该可以工作。请注意,您将需要选择unicode(truetype)字体-我的计算机上安装了Consolas和Lucida Console。

请注意,如下所示,我使用Java 1.6.0_23在我的计算机上重复了最后一个字符。不能真正解释这一点:(

msandiford@foo /cygdrive/c/foo
$ javac FrenchTest.java

msandiford@foo /cygdrive/c/foo
$ java -Dfile.encoding=UTF-8 FrenchTest
NOW : Le résultat estt
NOW : Nom de l'hôtee

msandiford@foo /cygdrive/c/foo
$ java -version
java version "1.6.0_23"
Java(TM) SE Runtime Environment (build 1.6.0_23-b05)
Java HotSpot(TM) Client VM (build 19.0-b09, mixed mode, sharing)

关于java - 为什么system.out.println()在法语OS上返回不同的法语字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7144264/

10-10 08:10