From 6615821d2a561b45e82e54205a874e024c284a18 Mon Sep 17 00:00:00 2001
From: qiqiworld <1354092549@qq.com>
Date: Wed, 12 Aug 2020 11:24:48 +0800
Subject: [PATCH] feature: allow to set encoding for reader
---
ConsoleHub/ConsoleHub.csproj | 2 +-
ConsoleHub/MainWindow.xaml.cs | 20 ++++++++++++++------
2 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/ConsoleHub/ConsoleHub.csproj b/ConsoleHub/ConsoleHub.csproj
index 40e9b04..04576e2 100644
--- a/ConsoleHub/ConsoleHub.csproj
+++ b/ConsoleHub/ConsoleHub.csproj
@@ -5,7 +5,7 @@
netcoreapp3.1
true
Resources\AppIcon.ico
- 1.3.0
+ 1.4.0
diff --git a/ConsoleHub/MainWindow.xaml.cs b/ConsoleHub/MainWindow.xaml.cs
index d1f1a48..19751a5 100644
--- a/ConsoleHub/MainWindow.xaml.cs
+++ b/ConsoleHub/MainWindow.xaml.cs
@@ -28,9 +28,8 @@ public partial class MainWindow : Window
{
private readonly MainViewModel ViewModel = new MainViewModel();
[DllImport("kernel32.dll", SetLastError = true)]
- private static extern int GetConsoleCP();
- [DllImport("kernel32.dll", SetLastError = true)]
- private static extern int GetConsoleOutputCP();
+ private static extern int GetOEMCP();
+ private static int codepage = GetOEMCP();
public MainWindow()
{
this.DataContext = ViewModel;
@@ -118,6 +117,15 @@ private async Task ExecuteCommand(string fileName, string arguments)
await Task.Delay(Convert.ToInt32(arguments));
return;
}
+ if (fileName.ToLowerInvariant() == "*codepage")
+ {
+ codepage = Convert.ToInt32(arguments);
+ if (codepage == 0)
+ {
+ codepage = GetOEMCP();
+ }
+ return;
+ }
if (string.IsNullOrWhiteSpace(fileName))
{
return;
@@ -132,9 +140,9 @@ private async Task ExecuteCommand(string fileName, string arguments)
model.Content.StartProcess(new ProcessStartInfo() {
FileName = fileName,
Arguments = arguments,
- StandardOutputEncoding = Encoding.GetEncoding(GetConsoleOutputCP()),
- StandardErrorEncoding = Encoding.GetEncoding(GetConsoleOutputCP()),
- StandardInputEncoding = Encoding.GetEncoding(GetConsoleCP())
+ StandardOutputEncoding = Encoding.GetEncoding(codepage),
+ StandardErrorEncoding = Encoding.GetEncoding(codepage),
+ StandardInputEncoding = Encoding.GetEncoding(codepage)
});
try
{