Sie können auch Unicode-Objekte drucken, Sie müssen str () nicht darum herum ausführen.
Angenommen, Sie möchten wirklich eine str:
Wenn Sie str (u '\ u2013') ausführen, versuchen Sie, die Unicode-Zeichenfolge in eine 8-Bit-Zeichenfolge zu konvertieren. Dazu müssen Sie eine Codierung verwenden, eine Zuordnung zwischen Unicode-Daten zu 8-Bit-Daten. Str () verwendet die Standardcodierung des Systems, die unter Python 2 ASCII ist. ASCII enthält nur die 127 ersten Codepunkte von Unicode, dh \ u0000 bis \ u007F1. Das Ergebnis ist, dass Sie den obigen Fehler erhalten, der ASCII-Codec weiß einfach nicht, was \ u2013 ist (es ist übrigens ein langer Strich).
Sie müssen daher angeben, welche Codierung Sie verwenden möchten. Übliche sind ISO-8859-1, am häufigsten als Latin-1 bekannt, das die 256 ersten Codepunkte enthält; UTF-8, das alle Codepunkte mithilfe der Codierung mit variabler Länge codieren kann, CP1252, das unter Windows üblich ist, und verschiedene chinesische und japanische Codierungen.
Sie verwenden sie wie folgt:
u'\u2013'.encode('utf8')
Das Ergebnis ist ein Str, der eine Folge von Bytes enthält, die die uTF8-Darstellung des betreffenden Zeichens darstellt:
'\xe2\x80\x93'
Und Sie können es ausdrucken:
>>> print '\xe2\x80\x93'
–