diff --git a/Terminal.Gui/Drivers/AnsiDriver/AnsiOutput.cs b/Terminal.Gui/Drivers/AnsiDriver/AnsiOutput.cs index 22c15a368f..a90ee85366 100644 --- a/Terminal.Gui/Drivers/AnsiDriver/AnsiOutput.cs +++ b/Terminal.Gui/Drivers/AnsiDriver/AnsiOutput.cs @@ -58,6 +58,13 @@ public AnsiOutput () try { + // Ensure the console output code page is UTF-8 (65001). The ANSI driver writes + // UTF-8 encoded bytes via WriteFile; without this, a fresh Windows terminal uses + // its default OEM code page (e.g. 437), causing multi-byte UTF-8 characters + // (box-drawing glyphs, etc.) to be misinterpreted as garbled single-byte characters. + // See https://github.com/gui-cs/Terminal.Gui/issues/4848 + Console.OutputEncoding = Encoding.UTF8; + // Check if we have a real console first if (!IsAttachedToTerminal) {