diff --git a/CMakeLists.txt b/CMakeLists.txt index f734ec60fe..b653f008f9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,6 +29,7 @@ elseif (MSVC) add_compile_options(/Zc:strictStrings-) add_compile_options(/MP) add_compile_options(/W0) + add_compile_options(/utf-8) endif () if (NOT MSVC) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error -Wno-c++11-narrowing") diff --git a/src/dusk/main.cpp b/src/dusk/main.cpp index d424bf2b56..4155482488 100644 --- a/src/dusk/main.cpp +++ b/src/dusk/main.cpp @@ -1,5 +1,24 @@ +#if _WIN32 +#define WINDOWS_LEAN_AND_MEAN +#include +#endif + int game_main(int argc, char* argv[]); +void WindowsSetupConsole(); + int main(int argc, char* argv[]) { + WindowsSetupConsole(); return game_main(argc, argv); } + +void WindowsSetupConsole() { +#if _WIN32 + SetConsoleOutputCP(CP_UTF8); + + auto stdout = GetStdHandle(STD_OUTPUT_HANDLE); + DWORD consoleMode; + GetConsoleMode(stdout, &consoleMode); + SetConsoleMode(stdout, consoleMode | ENABLE_PROCESSED_OUTPUT | ENABLE_VIRTUAL_TERMINAL_PROCESSING); +#endif +} \ No newline at end of file