程序如下:
//RunTask.java
import java.io.*;public class RunTask 
{
private static com.sun.tools.javac.Main javac = new com.sun.tools.javac.Main();  public static void main(String[] args) 
{
try { 
String filename = "SMS.java";

String [] arguments=new String[]{"-classpath","d:\\","d:\\"+filename};
javac.compile(arguments);
String result=filename.substring(0,filename.indexOf('.'));
Process child=Runtime.getRuntime().exec("java -classpath d:\\ "+result); InputStream child_in = child.getInputStream();

int c; 
            while ((c = child_in.read()) != -1) { 
               System.out.print((char)c); 
            } 
child_in.close(); 

}
catch (IOException e)

System.err.println(e); 
        } 
    }
}//SMS.java
class SMS 
{
public static void main(String[] args) 
{
System.out.println("Hello World!");
System.out.println("你好!");
}
}为什么我运行java RunTask后显示
Hello World!
????!
如何解决这里的中文显示问题呢?求教

解决方案 »

  1.   

    (char)c
    你直接把byte强制置换成char,
    不乱码才怪呢.
    你应该把inputstream包装成reader,
    这样就没有问题了.
      

  2.   

    byte[] cc=new byte[100];
                child_in.read(cc);
                int j=0;
                
                while ((c = child_in.read()) != -1) { 
                   System.out.println("00"+(byte)c);
                   cc[j]=(byte)c;
                   j++;
                } 
                System.out.println(new String(cc));