字符编码

String good = "μ"; //该字符对应的ascii编码集的 编号是181
String error = "µ"; //这个是从网页上copy的.我个人觉得是unicode文件中copye的.
System.out.println(good + error);

请复制后执行. (备注: eclipse 环境为gbk的 是不能保存上面代码的.请修改为utf-8后保存哈.)
我的环境如下.xp ,文件保存为utf-8,eclipse控制台指定为utf-8. 运行后发现控制台显示2个 ?
xp ,文件保存为utf-8,eclipse控制台指定为gbk 运行后发现控制台显示一个乱码 .一个正常.
linux, 文件保存为utf-8 .运行后发现2个均显示正常.
想知道上述问题出现的原因.
ps: 回答问题的重点是造成上述问题出现的原因.

[quote]但是我好奇的是为何都在lniux上面运行可以正常 '显示'. [/quote]

这个问题和字库有关,字体的显示需要字库的支持。但是为何在文本编辑器可以显示出来,但是命令窗口显示不出来,个人觉得很可能的原因是: 文件编辑器会在系统中所有字体库中进行查找,只要在某个库里可以找到字体显示支持,就显示出来。而命令窗口比较简单,通常使用的是默认库 - 比如在我的机器上就使用的是宋体(你可以在你的机器上查看命令窗口的属性), 如果宋体不支持该字符显示,命令窗口就显示不出来了。

实际上,有一些字符即使在你的文本编辑器里也显示不出来,这个时候你需要下载更大的字体库支持了。

上面是个人观点,关于字库如何支持字符集显示的细节,我没有深入研究过。

不好意思,我还以为你这个问题已经解决了:

刚看了一下,产生上述问题的原因是因为你提供的两个字符是不相同的,你可以通过
getBytes打印出内码,或者通过最简单的方法:

http://unicode.org/charts/unihan.html

在上面的网页中,把你提供的两个字符分别拷贝进去,点Lookup,可以发现两个字符对应的编码是不一样的。

出现问号是因为你显示不出来这个编码的字符。