Repository: karaf Updated Branches: refs/heads/master e6260bcd5 -> f2b5e47cd
[KARAF-4782] Encoding is lost in ssh print streams Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/19cf2a22 Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/19cf2a22 Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/19cf2a22 Branch: refs/heads/master Commit: 19cf2a229d5c22aa5243863b2a9dd827c1293772 Parents: e6260bc Author: Guillaume Nodet <gno...@apache.org> Authored: Tue Oct 18 11:14:05 2016 +0200 Committer: Guillaume Nodet <gno...@apache.org> Committed: Tue Oct 18 11:16:12 2016 +0200 ---------------------------------------------------------------------- .../org/apache/karaf/shell/ssh/ShellFactoryImpl.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/19cf2a22/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellFactoryImpl.java ---------------------------------------------------------------------- diff --git a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellFactoryImpl.java b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellFactoryImpl.java index f7fdf42..07a63f7 100644 --- a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellFactoryImpl.java +++ b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/ShellFactoryImpl.java @@ -97,10 +97,10 @@ public class ShellFactoryImpl implements Factory<Command> { try { final Subject subject = ShellImpl.this.session != null ? ShellImpl.this.session .getAttribute(KarafJaasAuthenticator.SUBJECT_ATTRIBUTE_KEY) : null; - final PrintStream pout = out instanceof PrintStream ? (PrintStream) out : new PrintStream(out); - final PrintStream perr = err instanceof PrintStream ? (PrintStream) err : out == err ? pout : new PrintStream(err); + String encoding = getEncoding(env); + final PrintStream pout = out instanceof PrintStream ? (PrintStream) out : new PrintStream(out, false, encoding); + final PrintStream perr = err instanceof PrintStream ? (PrintStream) err : out == err ? pout : new PrintStream(err, false, encoding); terminal = new SshTerminal(env, in, pout); - String encoding = getEncoding(); shell = sessionFactory.create(in, pout, perr, terminal, encoding, this::destroy); for (Map.Entry<String, String> e : env.getEnv().entrySet()) { @@ -130,9 +130,10 @@ public class ShellFactoryImpl implements Factory<Command> { * * @return The default encoding to use when none is specified. */ - public static String getEncoding() { + public static String getEncoding(Environment env) { // LC_CTYPE is usually in the form en_US.UTF-8 - String envEncoding = extractEncodingFromCtype(System.getenv("LC_CTYPE")); + String ctype = env.getEnv().getOrDefault("LC_TYPE", System.getenv("LC_CTYPE")); + String envEncoding = extractEncodingFromCtype(ctype); if (envEncoding != null) { return envEncoding; }