For full Unicode support on Windows, make sure your console's code page is 65001
(UTF-8) before calling your program:
- from
cmd.exe
:
- from PowerShell:
$OutputEncoding = [Console]::InputEncoding = [Console]::OutputEncoding = [Text.UTF8Encoding]::new()
Unless you happen to have used the still-in-beta Windows 10 feature that activates system-wide UTF-8 support (see this answer), your default OEM (console) code page is a fixed, single-byte encoding such as 437
on US-English systems, which is limited to 256 characters and therefore cannot represent Unicode characters such as •
(BULLET, U+2022
).
Seemingly, with code page 437
in effect, •
degrades to an invisible ASCII-range control character (ALERT, U+0007
).
Note:
This behavior is not specific to the Colorful.Console
package; it equally applies to the built-in Console.WriteLine()
.
Changing a console's code page can affect other programs, so you may have to restore the original one.