From 7b23c949c4b7794db59852009c6e3315a924fe39 Mon Sep 17 00:00:00 2001 From: NextTurn <45985406+NextTurn@users.noreply.github.com> Date: Thu, 2 Apr 2020 00:00:00 +0800 Subject: [PATCH] Set console output code page to UTF-8 --- src/WinSW.Core/Native/ConsoleApis.cs | 5 +++++ src/WinSW/WrapperService.cs | 2 ++ 2 files changed, 7 insertions(+) diff --git a/src/WinSW.Core/Native/ConsoleApis.cs b/src/WinSW.Core/Native/ConsoleApis.cs index fb4b2a8..b3b0bb7 100644 --- a/src/WinSW.Core/Native/ConsoleApis.cs +++ b/src/WinSW.Core/Native/ConsoleApis.cs @@ -8,6 +8,8 @@ namespace WinSW.Native { internal const int ATTACH_PARENT_PROCESS = -1; + internal const uint CP_UTF8 = 65001; + [DllImport(Libraries.Kernel32, SetLastError = true)] internal static extern bool AllocConsole(); @@ -23,6 +25,9 @@ namespace WinSW.Native [DllImport(Libraries.Kernel32)] internal static extern bool SetConsoleCtrlHandler(ConsoleCtrlHandlerRoutine? handlerRoutine, bool add); + [DllImport(Libraries.Kernel32)] + internal static extern bool SetConsoleOutputCP(uint codePageID); + internal delegate bool ConsoleCtrlHandlerRoutine(CtrlEvents ctrlType); internal enum CtrlEvents : uint diff --git a/src/WinSW/WrapperService.cs b/src/WinSW/WrapperService.cs index 7242a44..eeb6757 100644 --- a/src/WinSW/WrapperService.cs +++ b/src/WinSW/WrapperService.cs @@ -568,6 +568,8 @@ namespace WinSW Debug.Assert(succeeded); succeeded = ConsoleApis.SetConsoleCtrlHandler(null, false); // inherited Debug.Assert(succeeded); + succeeded = ConsoleApis.SetConsoleOutputCP(ConsoleApis.CP_UTF8); + Debug.Assert(succeeded); Process process; try