From 6b536315fc9b669a54c32f02dd5e03b61c74dc3c Mon Sep 17 00:00:00 2001 From: Aaron Date: Mon, 6 Jan 2025 07:21:38 -0800 Subject: [PATCH] Set default stream encoding to utf-8 to `logging` handlers (#685) With the addition of characters that require unicode support to source files, it is necessary to a default encoding of `utf-8` to prevent errors such as `UnicodeEncodeError: 'charmap' codec can't encode character '\u017f' when parsing file names.` --- edk2toollib/log/file_handler.py | 4 ++-- edk2toollib/log/junit_report_format.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/edk2toollib/log/file_handler.py b/edk2toollib/log/file_handler.py index 5c300d5f..e09d9ca5 100644 --- a/edk2toollib/log/file_handler.py +++ b/edk2toollib/log/file_handler.py @@ -13,9 +13,9 @@ class FileHandler(logging.FileHandler): """Object for handling basic logging output to files.""" - def __init__(self, filename: str, mode: str = "w+") -> "FileHandler": + def __init__(self, filename: str, mode: str = "w+", encoding="utf-8") -> "FileHandler": """Init a file handler for the specified file.""" - logging.FileHandler.__init__(self, filename, mode=mode) + logging.FileHandler.__init__(self, filename, mode=mode, encoding=encoding) def handle(self, record: logging.LogRecord) -> bool: """Conditionally emit the specified logging record. diff --git a/edk2toollib/log/junit_report_format.py b/edk2toollib/log/junit_report_format.py index c8eecb94..26b1a95b 100644 --- a/edk2toollib/log/junit_report_format.py +++ b/edk2toollib/log/junit_report_format.py @@ -197,7 +197,7 @@ def create_new_testsuite(self, name: str, package: str) -> JunitReportTestSuite: def Output(self, filepath: str) -> None: """Write report to file.""" - f = open(filepath, "w") + f = open(filepath, "w", encoding="utf-8") f.write("") f.write('') f.write("")