Ich habe einen Browser, der utf-8-Zeichen an meinen Python-Server sendet, aber wenn ich ihn aus der Abfragezeichenfolge abrufe, ist die von Python zurückgegebene Codierung ASCII. Wie kann ich die einfache Zeichenfolge in utf-8 konvertieren?
HINWEIS: Die vom Web übergebene Zeichenfolge ist bereits UTF-8-codiert. Ich möchte Python lediglich dazu bringen, sie als UTF-8 und nicht als ASCII zu behandeln.
python
python-2.7
unicode
utf-8
Bin Chen
quelle
quelle
"some_string".encode('utf-8').decode('utf-8')
Antworten:
^ Dies ist der Unterschied zwischen einer Byte-Zeichenfolge (plain_string) und einer Unicode-Zeichenfolge.
^ Konvertieren in Unicode und Festlegen der Codierung.
quelle
UnicodeDecodeError: 'utf8' codec can't decode byte 0xb0 in position 2: invalid start byte
Dies ist mein Code: ret = [] für Zeile in csvReader: cline = [] für Ulme in Zeile: unicodestr = unicode (Ulme, 'utf-8') cline.append (unicodestr) ret .append (cline)unicode()
existieren nicht.u
zurück in einstr
Format (konvertiereu
zurück ins
)?Wenn die oben genannten Methoden nicht funktionieren, können Sie Python auch anweisen, Teile einer Zeichenfolge zu ignorieren, die nicht in utf-8 konvertiert werden können:
quelle
Könnte ein bisschen übertrieben sein, aber wenn ich mit ASCII und Unicode in denselben Dateien arbeite, kann das Wiederholen der Dekodierung schmerzhaft sein. Ich verwende Folgendes:
quelle
Fügen Sie die folgende Zeile oben in Ihre .py-Datei ein:
Mit dieser Option können Sie Zeichenfolgen direkt in Ihrem Skript codieren:
quelle
from __future__ import unicode_literals
oderu''
Präfix verwenden. Verwenden Sie keine Nicht-ASCII-Zeichen inbytes
Literalen. Um utf-8 Bytes zu erhalten, können Sieutf8bytes = unicode_text.encode('utf-8')
später, wenn es notwendig ist.from __future__ import unicode_literals
ich eine Zeichenfolge mit Nicht-ASCII-Zeichen in utf-8 konvertieren?Wenn ich Sie richtig verstehe, haben Sie eine utf-8-codierte Byte-Zeichenfolge in Ihrem Code.
Das Konvertieren einer Byte-Zeichenfolge in eine Unicode-Zeichenfolge wird als Decodierung bezeichnet (Unicode -> Byte-Zeichenfolge wird codiert).
Dazu verwenden Sie die Unicode- Funktion oder die Decodierungsmethode . Entweder:
Oder:
quelle
quelle
In Python 3.6 ist keine unicode () -Methode integriert. Zeichenfolgen werden standardmäßig bereits als Unicode gespeichert, und es ist keine Konvertierung erforderlich. Beispiel:
quelle
Übersetzen Sie mit ord () und unichar (). Jedem Unicode-Zeichen ist eine Nummer zugeordnet, so etwas wie ein Index. Python hat also einige Methoden, um zwischen einem Zeichen und seiner Nummer zu übersetzen. Nachteil ist ein Beispiel. Hoffe es kann helfen.
quelle
Ja, Sie können hinzufügen
in der ersten Zeile Ihres Quellcodes.
Weitere Informationen finden Sie hier https://www.python.org/dev/peps/pep-0263/
quelle