X-Git-Url: http://jaekl.net/gitweb/?a=blobdiff_plain;f=prod%2Fnet%2Fjaekl%2Fcfb%2Futil%2FCommand.java;h=be3b07e534c5c6f04ac7cd13e4d94c9b3ca945dc;hb=7ac6be132ecd6872971a1de56f033b4434d3173a;hp=4242eea9602dedb5dcb293917d573670330d961f;hpb=08a530ef53cc4756f5e632b69c78830872ebd9f4;p=cfb.git diff --git a/prod/net/jaekl/cfb/util/Command.java b/prod/net/jaekl/cfb/util/Command.java index 4242eea..be3b07e 100644 --- a/prod/net/jaekl/cfb/util/Command.java +++ b/prod/net/jaekl/cfb/util/Command.java @@ -1,11 +1,19 @@ package net.jaekl.cfb.util; +// Copyright (C) 2015 Christian Jaekl + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.charset.Charset; +import java.nio.charset.IllegalCharsetNameException; +import java.nio.charset.UnsupportedCharsetException; public class Command { + public static final String UTF_8 = "UTF-8"; + private Charset m_charset; + public static class Result { private int m_retCode; @@ -23,14 +31,14 @@ public class Command { public String getStderr() { return m_stderr; } } - private static class StreamGobbler extends Thread { + private class StreamGobbler extends Thread { private StringBuilder m_sb; private BufferedReader m_br; public StreamGobbler(InputStream is) { m_sb = new StringBuilder(); - m_br = new BufferedReader(new InputStreamReader(is)); + m_br = new BufferedReader(new InputStreamReader(is, m_charset)); } @Override @@ -59,7 +67,12 @@ public class Command { public Command() { - // no-op + try { + m_charset = Charset.forName(System.getProperty("file.encoding", UTF_8)); + } + catch (IllegalCharsetNameException | UnsupportedCharsetException exc) { + m_charset = Charset.forName(UTF_8); + } } public Result exec(String cmd) throws IOException