程序如下:
//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!
????!
如何解决这里的中文显示问题呢?求教
//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!
????!
如何解决这里的中文显示问题呢?求教
你直接把byte强制置换成char,
不乱码才怪呢.
你应该把inputstream包装成reader,
这样就没有问题了.
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));