实际上,我在 mac 上的终端窗口中的显示编码遇到了一些问题。
我正在用 Java 运行一个简单的程序:
在编译之后,当我运行该代码时,我会遇到以下结果:
变量的编号z
与确切的 unicode 值不匹配!
在编辑器和终端中,我所有的首选项都设置为 UTF-8,但我找不到解决这个问题的方法!
更新:
这里还有程序的编写和编译:
提前致谢!
使用以下 Java 程序:
/* A.java */
class A
{
public static void main (String[] args)
{
for (char c = 'A'; c < 270; c++)
{
System.out.print(c);
}
System.out.println();
}
}
然后我得到以下输出:
$ java -Dfile.encoding=ASCII A
Default Charset: US-ASCII
abcdefghijklmnopqrstuvwxyz{|}~??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
$ java -Dfile.encoding=iso-8859-1 A
Default Charset: ISO-8859-1
abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������??????????????
$ java -Dfile.encoding=UTF-8 A
Default Charset: UTF-8
abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČč
$ java A
Default Charset: UTF-8
abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČč
从上面你可以看到 ISO-8859-1 打印了 '�' 和 '?'。'�' 表示它不是有效的 UTF-8,终端无法打印它,而 '?' 意味着 Java 无法将所需的字符转换为该字符集。这就是为什么 ASCII 只有 '?',因为它只能转换 ASCII 字符。
默认的 file.encoding 取自您的语言环境,这就是您可能需要设置 LC_CTYPE 的原因。否则,您的终端需要设置为理解 UTF-8。
$ echo $LC_CTYPE
UTF-8