乱码问题

licjd 2018-06-07 10:07:41
public class ReadFromProcess
{
public static void main(String[] args)
throws IOException
{
// 运行javac命令,返回运行该命令的子进程
Process p = Runtime.getRuntime().exec("javac");
try(
// 以p进程的错误流创建BufferedReader对象
// 这个错误流对本程序是输入流,对p进程则是输出流
BufferedReader br = new BufferedReader(new
InputStreamReader(p.getErrorStream())))
{
String buff = null;
// 采取循环方式来读取p进程的错误输出
while((buff = br.readLine()) != null)
{
System.out.println(buff);
}
}
}
}
在Eclipse(默认UTF-8)中运行输出的中文字符时乱码了,在CMD命令下运行java ReadFromProcess就没有乱码问题。
朋友电脑上同样的程序运行没有乱码问题。
...全文
1098 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2018-06-08
  • 打赏
  • 举报
回复
需要对应的编码方式进行处理
licjd 2018-06-08
  • 打赏
  • 举报
回复
非常感谢各位的回答,但把第二个参数设置为"UTF-8",仍然没用。CMD默认"GBK",Eclipse默认"UTF-8"。 个人感觉应该是读取方式的问题,我试着改成以下就没有乱码问题,但还有部分出现乱码。
 // 运行javac命令,返回运行该命令的子进程
		Process p = Runtime.getRuntime().exec("javac");
		try(
			// 以p进程的错误流创建BufferedReader对象
			// 这个错误流对本程序是输入流,对p进程则是输出流
			InputStream inputStreamReader = p.getErrorStream())
		{
			byte[] b = new byte[10240];
			int len = 0;
			// 采取循环方式来读取p进程的错误输出
			int i = 0;
			while((len = inputStreamReader.read(b)) > 0 )
			{
//				String s = new String(b,0,len) ;
				System.out.println(new String(b,"GBK"));
			}
		}
-Werror                    出现警告时终止编译
请确保使用的 API 在指定的配置文件中可用
  -version                   版本信息
           指定放置生成的本机标头文件的位置
欠裰葱凶⑹痛砗�/或编译。
stacksoverflow 2018-06-08
  • 打赏
  • 举报
回复
InputStreamReader第二个参数写字符编码。
小熊猫丶 2018-06-08
  • 打赏
  • 举报
回复

                // 运行javac命令,返回运行该命令的子进程
                Process p = Runtime.getRuntime().exec("javac");
                try(
                // 以p进程的错误流创建BufferedReader对象
                // 这个错误流对本程序是输入流,对p进程则是输出流
                    BufferedReader br = new BufferedReader(new
                            InputStreamReader(p.getErrorStream(),"UTF-8"))){
                        String buff = null;
                        // 采取循环方式来读取p进程的错误输出
                        while((buff = br.readLine()) != null)
                        {
                            System.out.println(buff);
                        }
                    }
小熊猫丶 2018-06-08
  • 打赏
  • 举报
回复
BufferedReader responseBuffer = new BufferedReader( new InputStreamReader(httpConnection.getInputStream(),"UTF-8")); 参考这个,做一下UTF-8的转码

58,453

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧