public static void rumCommand(String cmd) {
Runtime runtime = Runtime.getRuntime();
int exitValue = 0;
try {         StringBuffer output = new StringBuffer();
        StringBuffer err = new StringBuffer();
//logger.info("----runtime.exec start!----");
String[] cmdArray = { "/bin/sh", "-c", cmd };
logger.info("start");
Process proc = runtime.exec(cmdArray);
logger.info("end");
//logger.info("----runtime.exec end!----"); /*
 * 系统需要通过提取某个命令的标准输出,来进行某项处理。例如,搜索/路径下的xml文件并对结果处理,如下: find / -name
 * "*.xml" -type f | xargs java 相应程序
 * 
 * 如果按照常规的方式,将以上的几个字串直接传递给Runtime.exec的参数,通过CommandExec的实现方法如下:
 * CommandExec exec = new CommandExec(); Process process =
 * exec.exec(new String(){"find", "/", "-name", "\"*.xml\"",
 * "-type", "f", "|", "xargs", "java", "相应程序"});
 */ Command sgStd = new Command(proc.getInputStream(),"STDOUT",output);
            Command sgErr = new Command(proc.getErrorStream(),"ERROUT",err);
            sgStd.start();
            sgErr.start();
exitValue = proc.waitFor();
//logger.info("----rumCommand exitValue: " + exitValue);
} catch (Exception e) { //e.printStackTrace();
logger.info(e); runtime.exit(1);
}
}cmd里面有中文 命令就不能正确执行 执行的是linux命令 谁能解决java执行linux命令有中文的问题

解决方案 »

  1.   

    linux系统的字符集是UTF-8
    把你要执行的命令先转成UTF-8格式应该就行了
      

  2.   

    把要执行的命令逐一转,String cmd1 = new String("cmd".getBytes("ISO-8859-1"),"UTF-8");
            String cmd2 = new String("cmd".getBytes("ISO-8859-1"),"UTF-8");
            String ss[] = {cmd1,cmd2};
      

  3.   

    这个方法试过不行  不是执行命令 是执行shell脚本传参有中文
      

  4.   

    这种工作还是交给C程序来完成吧,直接用read系统调用访问标准输出流的内容加以分析,Linux提供的一些库函数和系统调用不要太强大哦,java再通过jni调用就行了。