Verhindern, dass die Codierung Fehler in Python
Habe ich Skripte, die drucken von Nachrichten durch das logging-system oder manchmal auch print-Befehle. Auf der Windows-Konsole bekomme ich Fehlermeldungen wie
Traceback (most recent call last):
File "C:\Python32\lib\logging\__init__.py", line 939, in emit
stream.write(msg)
File "C:\Python32\lib\encodings\cp850.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2019' in position 4537:character maps to <undefined>
Ist es ein allgemeiner Weg, um alle Codierungen in den logging-system, print-Befehle, etc. fail-safe - (Fehler ignorieren)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, dass Ihr terminal/shell (cmd, wie Ihr auf Windows) nicht drucken kann jedes Unicode-Zeichen.
Können Sie die fail-safe-Kodierung von strings mit den
errors
argument derstr.encode
Methode. Zum Beispiel können Sie ersetzen Sie nicht unterstützt chars mit?
durch Einstellungerrors='replace'
.Sehen die Dokumentation für andere Optionen.
Bearbeiten Wenn Sie möchten, eine Allgemeine Lösung für die Protokollierung Sie können eine Unterklasse
StreamHandler
:getLogger
), müssen Sie die handler einmal. Wenn Sie mehrere Prozeduren, die Sie verwenden könnensetLoggerClass
mit einer benutzerdefinierten Klasse, die mit der hf.