We write the messages directly in the python modules, and those files are utf-8. Right now, we have no check or fallback if these characters we want to print are possible to encode with the character map of the terminal where tl-setup is run.
This results in an "Internal Error" and a traceback in tl-setup-log, see bug 8141. That bug was solved by replacing a character with an ascii-equivalent. But we need a more future-proof solution. Maybe at least autotests that catch this.