Force UTF-8 on clicker output so Windows stops failing runs

A run died with "'charmap' codec can't encode character '▶'" at step 1.
Python picks the console code page for stdout, and under PM2 - where stdout is
a pipe rather than a console - that is cp1252 on Windows. cp1252 handles the em
dashes in these files but not the run markers, so the first one raised
UnicodeEncodeError from inside run_steps and the runner reported it as a step
failure rather than an output problem.

Reconfigure stdout and stderr to UTF-8 at the top of each entry point, with
errors="replace" as a backstop for streams that cannot be reconfigured. Fixing
the encoding once beats stripping the glyphs from ~30 call sites, and covers
manual runs in a plain console too.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Brandon Li
2026-08-30 18:28:39 -05:00
co-authored by Claude Opus 5
parent 724ba5581c
commit fbe2c47ed4
3 changed files with 22 additions and 1 deletions
+3
View File
@@ -15,6 +15,8 @@ Nothing is clicked. The cursor is moved and put back where it started.
import sys
import time
from clicker import force_utf8_output
def line(label: str, value: str) -> None:
print(f" {label:<22} {value}")
@@ -125,6 +127,7 @@ def check_foreground() -> None:
def main() -> int:
force_utf8_output()
print("AutoFirmer clicker diagnostics")
check_platform()
check_dpi()