三)分析
1)出现有乱码(也就是?)。由于只出现?而没出现小方框,说明只是编码有问题,而不是字体问题。
在编码中,假如从一种字符集转换到别一种字符集,比较典型的是从GB2312转换到ISO8859_1(即ASCII),那么很多汉字(半个汉字)是无法映射到西文字符中去的,在这种情形下,系统就把这些字符用?代替。同样,也存在小字符集无法到大字符集的情况,具体原因这里就不详谈了。
2)出现了中文环境编译,中文环境运行时汉字显示有正确也有不正确的地方,同样,在西文环境下编译,在中文环境下运行时也出现类似情况。这是由于自动(默认)或手工(也就new String(bytes[,encode])和bytes getBytes([encode]))转码的结果。
2.1)在JAVA源文件-->JAVAC-->Class-->Java-->getBytes()-->new String()-->显示的过程中,每一步都有编码的转换过程,这个过程总是存在的,只是有的时候用默认的参数进行。下面我们一步一步分析为什么出现上面的情形。
2.2)这里是源代码:
HelloWorld.java:
------------------------
public class HelloWorld
{
public static void main(String[] argv)
{
try
{
System.out.
PRintln("1:"+"中文");
System.out.println("2:"+"中文".getBytes());