]> nmode's Git Repositories - signal-cli/commitdiff
Use console charset for reading/writing to stdin/out
authorAsamK <asamk@gmx.de>
Thu, 26 May 2022 12:49:16 +0000 (14:49 +0200)
committerAsamK <asamk@gmx.de>
Thu, 26 May 2022 13:01:36 +0000 (15:01 +0200)
src/main/java/org/asamk/signal/App.java
src/main/java/org/asamk/signal/commands/JsonRpcDispatcherCommand.java
src/main/java/org/asamk/signal/commands/SendCommand.java
src/main/java/org/asamk/signal/util/IOUtils.java

index f500d818d26a04db75f2e9f56d572e8ede4823b6..37f5feecaca15e89185004625d05eb26c3a81852 100644 (file)
@@ -46,7 +46,6 @@ import java.io.BufferedWriter;
 import java.io.File;
 import java.io.IOException;
 import java.io.OutputStreamWriter;
 import java.io.File;
 import java.io.IOException;
 import java.io.OutputStreamWriter;
-import java.nio.charset.Charset;
 
 import static net.sourceforge.argparse4j.DefaultSettings.VERSION_0_9_0_DEFAULT_SETTINGS;
 
 
 import static net.sourceforge.argparse4j.DefaultSettings.VERSION_0_9_0_DEFAULT_SETTINGS;
 
@@ -123,7 +122,7 @@ public class App {
         var outputType = outputTypeInput == null
                 ? command.getSupportedOutputTypes().stream().findFirst().orElse(null)
                 : outputTypeInput;
         var outputType = outputTypeInput == null
                 ? command.getSupportedOutputTypes().stream().findFirst().orElse(null)
                 : outputTypeInput;
-        var writer = new BufferedWriter(new OutputStreamWriter(System.out, Charset.defaultCharset()));
+        var writer = new BufferedWriter(new OutputStreamWriter(System.out, IOUtils.getConsoleCharset()));
         var outputWriter = outputType == null
                 ? null
                 : outputType == OutputType.JSON ? new JsonWriterImpl(writer) : new PlainTextWriterImpl(writer);
         var outputWriter = outputType == null
                 ? null
                 : outputType == OutputType.JSON ? new JsonWriterImpl(writer) : new PlainTextWriterImpl(writer);
index 8eafa5df45b696e1cc8c8f4d620ca42c0c004f4e..d832294916a62de3c337b56d5856b8f000e25a30 100644 (file)
@@ -48,7 +48,8 @@ public class JsonRpcDispatcherCommand implements LocalCommand {
         m.setIgnoreAttachments(ignoreAttachments);
 
         final var jsonOutputWriter = (JsonWriter) outputWriter;
         m.setIgnoreAttachments(ignoreAttachments);
 
         final var jsonOutputWriter = (JsonWriter) outputWriter;
-        final Supplier<String> lineSupplier = IOUtils.getLineSupplier(new InputStreamReader(System.in));
+        final Supplier<String> lineSupplier = IOUtils.getLineSupplier(new InputStreamReader(System.in,
+                IOUtils.getConsoleCharset()));
 
         final var handler = new SignalJsonRpcDispatcherHandler(jsonOutputWriter, lineSupplier, false);
         handler.handleConnection(m);
 
         final var handler = new SignalJsonRpcDispatcherHandler(jsonOutputWriter, lineSupplier, false);
         handler.handleConnection(m);
index 3873cc278f8dc596d00bf638cf862e4286fdd97f..ae324c84c89dfb11e94840df486aa632515c0cdb 100644 (file)
@@ -24,7 +24,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
 import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
-import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
@@ -120,7 +119,7 @@ public class SendCommand implements JsonRpcLocalCommand {
         if (readMessageFromStdin || (messageText == null && sticker == null)) {
             logger.debug("Reading message from stdin...");
             try {
         if (readMessageFromStdin || (messageText == null && sticker == null)) {
             logger.debug("Reading message from stdin...");
             try {
-                messageText = IOUtils.readAll(System.in, Charset.defaultCharset());
+                messageText = IOUtils.readAll(System.in, IOUtils.getConsoleCharset());
             } catch (IOException e) {
                 throw new UserErrorException("Failed to read message from stdin: " + e.getMessage());
             }
             } catch (IOException e) {
                 throw new UserErrorException("Failed to read message from stdin: " + e.getMessage());
             }
index 2585066433e47516617a74a794231a6e43281ad8..9f220946cd09dcaa3b68c57e095adfc1a727e843 100644 (file)
@@ -39,6 +39,11 @@ public class IOUtils {
     private IOUtils() {
     }
 
     private IOUtils() {
     }
 
+    public static Charset getConsoleCharset() {
+        final var console = System.console();
+        return console == null ? Charset.defaultCharset() : console.charset();
+    }
+
     public static String readAll(InputStream in, Charset charset) throws IOException {
         var output = new StringWriter();
         var buffer = new byte[4096];
     public static String readAll(InputStream in, Charset charset) throws IOException {
         var output = new StringWriter();
         var buffer = new byte[4096];