实际上我在Mac上的终端窗口中显示编码有问题。
我在Java中运行一个简单的程序:
编译完成后,当我运行该代码时,我面对这个结果:
变量z
的数量与确切的unicode值不匹配!
我的所有偏好都设置为UTF-8,在编辑器中以及我的终端中,但我找不到解决此问题的方法!
更新:
此处还有编写和编译程序:
提前致谢!
答案 0 :(得分:0)
使用以下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