From f7441f02349500b46341f76b054f5ef1eb7baa1d Mon Sep 17 00:00:00 2001 From: Mikhail Redko Date: Sun, 11 Apr 2021 20:41:44 +0300 Subject: Core/Misc: Fixed utf8 encoding in console input/output. (#26352) * Core/Misc: Fixed utf8 encoding in console input/output. * Fix gcc build * Fixed that weird 'a' with circle above it and other similar letters. Also fixed encoding in AppenderConsole which sometimes did not work as it should * Fix build on Linux * Probably better to do it like this (cherry picked from commit 1539bed3db86f2153f2d0d5fbf24bf9ee4af1d92) --- src/common/Logging/AppenderConsole.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/common/Logging/AppenderConsole.cpp') diff --git a/src/common/Logging/AppenderConsole.cpp b/src/common/Logging/AppenderConsole.cpp index 61efed60e90..fa146dc6960 100644 --- a/src/common/Logging/AppenderConsole.cpp +++ b/src/common/Logging/AppenderConsole.cpp @@ -162,6 +162,15 @@ void AppenderConsole::ResetColor(bool stdout_stream) #endif } +void AppenderConsole::Print(std::string const& str, bool error) +{ +#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS + WriteWinConsole(str + "\n", error); +#else + utf8printf(error ? stderr : stdout, "%s\n", str.c_str()); +#endif +} + void AppenderConsole::_write(LogMessage const* message) { bool stdout_stream = !(message->level == LOG_LEVEL_ERROR || message->level == LOG_LEVEL_FATAL); @@ -194,9 +203,9 @@ void AppenderConsole::_write(LogMessage const* message) } SetColor(stdout_stream, _colors[index]); - utf8printf(stdout_stream ? stdout : stderr, "%s%s\n", message->prefix.c_str(), message->text.c_str()); + Print(message->prefix + message->text, !stdout_stream); ResetColor(stdout_stream); } else - utf8printf(stdout_stream ? stdout : stderr, "%s%s\n", message->prefix.c_str(), message->text.c_str()); + Print(message->prefix + message->text, !stdout_stream); } -- cgit v1.2.3