diff --git a/src/WinSW.Core/Native/ConsoleApis.cs b/src/WinSW.Core/Native/ConsoleApis.cs index 0e0e8c5..ea4656c 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 AttachConsole(int processId); @@ -20,6 +22,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.Core/Util/ProcessHelper.cs b/src/WinSW.Core/Util/ProcessHelper.cs index 66e58c7..97efd67 100644 --- a/src/WinSW.Core/Util/ProcessHelper.cs +++ b/src/WinSW.Core/Util/ProcessHelper.cs @@ -219,6 +219,8 @@ namespace WinSW.Util bool succeeded = SetConsoleCtrlHandler(null, false); // inherited Debug.Assert(succeeded); + succeeded = ConsoleApis.SetConsoleOutputCP(ConsoleApis.CP_UTF8); + Debug.Assert(succeeded); try {