3

当我运行这个程序时,它给了我一个“?” 对于 unicode 代码点\u0508。这是因为默认的 windows 字符编码 CP-1252 无法映射此代码点。

但是当我在 Eclipse 中将此文件保存为 'Text file encoding' = UTF-8 并运行此程序时,它会给我正确的输出AԈC

为什么这行得通?我的意思是 java 文件保存为 UTF-8,但底层的 Windows 操作系统编码仍然是 CP-1252。我的问题类似于,当我尝试读取最初以 UTF-8 编写的 UTF-16 文本文件时,输出会因不同的框符号而变得奇怪。

public class e {
public static void main(String[] args) {
    System.out.println(System.getProperty("file.encoding"));
    String original = new String("A" + "\u0508" + "C");
    try {
        System.out.println("original = " + original);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
}
4

2 回答 2

3

将 Java 源文件保存为 UTF-8 或 Windows-1252 应该没有任何区别,因为这两种编码都以相同的方式对所有 ASCII 代码点进行编码。而且您的源文件仅使用 ASCII 字符。

因此,您应该尝试在其他地方找到错误。我建议重做您小心执行的步骤并重新进行测试。

于 2012-12-29T00:18:32.817 回答
2

问题是运行程序时 file.encoding 的设置,以及 System.out 的目的地。如果 System.out 是一个 Eclipse 控制台,它很可能被设置为 UTF-8 Eclipse 控制台。如果它只是一个 Windows DOS 框,它是一个 CP1252 代码页,并且只会显示 ? 在这种情况下。

于 2012-12-29T00:43:32.233 回答