From 1b2318676d68ad65be9786986c8a769bfda04fbf Mon Sep 17 00:00:00 2001 From: ssvine <79405160+ssvine@users.noreply.github.com> Date: Fri, 2 Jan 2026 17:36:46 +0300 Subject: [PATCH] Fix utf8 output on Windows --- src/windows-emulator/logger.cpp | 13 +++++++++++++ src/windows-emulator/logger.hpp | 7 +++++++ 2 files changed, 20 insertions(+) diff --git a/src/windows-emulator/logger.cpp b/src/windows-emulator/logger.cpp index 747912b3..ec53c72a 100644 --- a/src/windows-emulator/logger.cpp +++ b/src/windows-emulator/logger.cpp @@ -124,6 +124,19 @@ namespace } } +#ifdef OS_WINDOWS +logger::logger() +{ + old_cp = GetConsoleOutputCP(); + SetConsoleOutputCP(CP_UTF8); +} + +logger::~logger() +{ + SetConsoleOutputCP(old_cp); +} +#endif + void logger::print_message(const color c, const std::string_view message, const bool force) const { if (!force && this->disable_output_) diff --git a/src/windows-emulator/logger.hpp b/src/windows-emulator/logger.hpp index 569e49c9..ca7d29d7 100644 --- a/src/windows-emulator/logger.hpp +++ b/src/windows-emulator/logger.hpp @@ -4,6 +4,10 @@ class logger : public generic_logger { public: +#ifdef OS_WINDOWS + logger(); + ~logger() override; +#endif void print(color c, std::string_view message) override; void print(color c, const char* message, ...) override FORMAT_ATTRIBUTE(3, 4); void force_print(color c, const char* message, ...) FORMAT_ATTRIBUTE(3, 4); @@ -24,6 +28,9 @@ class logger : public generic_logger } private: +#ifdef OS_WINDOWS + UINT old_cp{}; +#endif bool disable_output_{false}; void print_message(color c, std::string_view message, bool force = false) const; };