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'
–
Sie können dies auch versuchen, um den Text zu erhalten.
foo.encode('ascii', 'ignore')
quelle
Da hier
str(u'\u2013')
Fehler verursacht werden, verwendenisinstance(foo,basestring)
Sie diese Option, um nach Unicode / String zu suchen. Wenn dies nicht vom Typ Base String ist, konvertieren Sie ihn in Unicode und wenden Sie dann Codierung anif isinstance(foo,basestring): foo.encode('utf8') else: unicode(foo).encode('utf8')
weiter lesen
quelle
Ich hatte das gleiche Problem. Das funktioniert gut für mich:
str(objdata).encode('utf-8')
quelle
Ich hatte genau dieses Problem in einem kürzlich durchgeführten Projekt, das wirklich sehr schmerzhaft ist. Ich habe endlich herausgefunden, dass der Python, den wir in Docker verwendet haben, die Codierung "ansi_x3.4-1968" anstelle von "utf-8" hat. Wenn also jemand da draußen Docker verwendet und diesen Fehler hat, kann das Befolgen dieser Schritte Ihr Problem gründlich lösen.
Erstellen Sie eine Datei und nennen Sie sie default_locale im selben Verzeichnis Ihrer Docker- Datei. Fügen Sie diese Zeile ein.
Umwelt = LANG = "es_ES.utf8", LC_ALL = "es_ES.UTF-8", LC_LANG = "es_ES.UTF-8"
füge diese zu deiner Docker-Datei hinzu,
RUN apt-get clean && apt-get update && apt-get install -y Gebietsschemas
RUN locale-gen en_CA.UTF-8
COPY ./default_locale / etc / default / locale
RUN chmod 0755 / etc / default / locale
ENV LC_ALL = en_CA.UTF-8
ENV LANG = en_CA.UTF-8
ENV LANGUAGE = en_CA.UTF-8
Dies hat mein Problem gründlich gelöst, als ich meinen Docker erstellt und erneut ausgeführt habe. Hoffentlich löst dies auch Ihr Problem.
quelle
bei mir funktioniert das
Unicode (Daten) .encode ('utf-8')
quelle