Für Debug-Zwecke Ich versuche, den Inhalt dict zu protokollieren, die Unicode-Strings in es enthält:Python 2 - Logging-Objekt enthält Unicode
logging.info(str(data))
Wo data
die folgende Struktur:
{'whatever®': 1}
Offensichtlich explodiert beim Aufruf von str()
die UnicodeEncodeError
, da versucht wird, das ®-Symbol unter Verwendung des ASCII-Codecs unter der Haube in einen Bytestring zu konvertieren. nicht __unicode__
Methoden haben
Als dict
Instanzen, was wäre der beste Weg, um zu erreichen, was ich versuche, meine eigene toString
Funktion für diese Art von Daten zu tun, außer zu schreiben, die nie Unicode-Strings zu bytestrings konvertieren? Gibt es eine Dienstprogrammfunktion, die mir in der stdlib oder einer externen Bibliothek, die ich verwenden könnte, nicht bekannt ist?
Python 2.7 zeigt keine Wörterbücher auf diese Weise an. Wie sieht es wirklich aus? Beispiel: Wenn ich an meinem UTF-8-Terminal "data = {'whatever®': 1}' 'und dann' data' eingeben, bekomme ich '{'whatever \ xc2 \ xae': 1}' was a ist In UTF-8 codierte Bytezeichenfolge. Dies kann ohne Probleme protokolliert werden. Was hast du eigentlich? –