


Detaillierte Erläuterung der Lösung des Problems der Kodierung und Dekodierung verstümmelter Zeichenfolgen
Warum wird der Fehler „UnicodeEncodeError: ‚ASCII‘-Codec kann Zeichen in Position 0-1 nicht kodieren: ordinal not in range(128 )“? In diesem Artikel wird dieses Problem untersucht. Die interne Darstellung von
string in Python ist die Unicode-Kodierung. Daher ist es bei der Kodierungskonvertierung normalerweise notwendig, Unicode als Zwischenkodierung zu verwenden Konvertieren Sie zuerst andere Codierungen. Die Zeichenfolge wird in Unicode decodiert und dann von Unicode in eine andere Codierung codiert.
Die Funktion der Dekodierung besteht darin, andere kodierte Zeichenfolgen in Unicode-Kodierung umzuwandeln, z. B. str1.decode('gb2312'), was bedeutet, dass die gb2312-kodierte Zeichenfolge str1 in Unicode-Kodierung konvertiert wird.
Die Funktion der Kodierung besteht darin, die Unicode-Kodierung in andere kodierte Zeichenfolgen umzuwandeln, z. B. str2.encode('gb2312'), was bedeutet, dass die Unicode-kodierte Zeichenfolge str2 in die gb2312-Kodierung konvertiert wird.
Daher müssen Sie beim Transkodieren zunächst verstehen, welche Codierung die Zeichenfolge str hat, sie dann in Unicode decodieren und dann in andere Codierungen codieren
Die Standardcodierung der Zeichenfolge im Code ist dasselbe wie Die Codedateien selbst sind konsistent codiert.
Zum Beispiel: s='Chinese'
Wenn es sich um eine utf8-Datei handelt, ist die Zeichenfolge utf8-codiert. Wenn es sich um eine gb2312-Datei handelt, ist die Codierung gb2312. In diesem Fall müssen Sie zum Durchführen der Kodierungskonvertierung zunächst die Dekodierungsmethode verwenden, um sie in die Unicode-Kodierung zu konvertieren, und dann die Kodierungsmethode verwenden, um sie in andere Kodierungen zu konvertieren. Wenn keine bestimmte Kodierungsmethode angegeben ist, werden normalerweise Codedateien verwendet, die mit der Standardkodierung des Systems erstellt wurden.
Wenn die Zeichenfolge wie folgt definiert ist: s=u'Chinese'
Die Kodierung der Zeichenfolge wird als Unicode angegeben, was die interne Kodierung von Python ist und sich von der Codedatei selbst unterscheidet . Codierung hat damit nichts zu tun. Daher müssen Sie in diesem Fall für die Codierungskonvertierung nur die Codierungsmethode direkt verwenden, um sie in die angegebene Codierung zu konvertieren.
Wenn eine Zeichenfolge bereits Unicode ist, tritt beim Dekodieren ein Fehler auf. Daher muss normalerweise beurteilt werden, ob die Kodierungsmethode Unicode ist:
isinstance(s, unicode) #用来判断是否为unicode
Verwenden Sie Nicht-Unicode-Kodierung . Wenn str zum Kodieren verwendet wird, wird ein Fehler gemeldet
Wie erhalte ich die Standardkodierung des Systems?
#!/usr/bin/env python #coding=utf-8 import sys print sys.getdefaultencoding()
Die Ausgabe dieses Programms unter englischem Windows. Die Ausgabekonsole selbst kann die Codierung der Zeichenfolge nicht anzeigen und es ist kein Problem mit dem Programm selbst.
Wenn Sie den folgenden Code in UliPad ausführen:
wird folgende Meldung angezeigt: UnicodeEncodeError: „ascii“-Codec kann Zeichen an Position 0-1 nicht kodieren: Ordnungszahl nicht im Bereich( 128). Dies liegt daran, dass das Konsoleninformationsausgabefenster von UliPad unter englischem Windows angezeigt wirds=u"中文" print s
Ändern Sie den letzten Satz in: print s.encode('gb2312')
Das Wort „Chinesisch“ kann korrekt ausgegeben werden.
Wenn der letzte Satz geändert wird in: print s.encode('utf8')
, dann ist die Ausgabe: xe4xb8xadxe6x96x87. Dies ist das Ergebnis der Ausgabe des Konsoleninformationsfensters, das utf8 ausgibt -kodierte Zeichenfolge gemäß ASCII-Kodierung.
unicode(str,'gb2312') ist dasselbe wie str.decode('gb2312'), beide konvertieren gb2312-codierten str in Unicode-Codierung
Verwenden Sie str.
KlasseSie können die Codierungsform von str überprüfenDas Prinzip wurde schon lange erklärt, und endlich gibt es ein Allheilmittel:)
Der Code lautet wie folgt:
#!/usr/bin/env python #coding=utf-8 s="中文" if isinstance(s, unicode): #s=u"中文" print s.encode('gb2312') else: #s="中文" print s.decode('utf-8').encode('gb2312')
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Lösung des Problems der Kodierung und Dekodierung verstümmelter Zeichenfolgen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Lösung für Erlaubnisprobleme beim Betrachten der Python -Version in Linux Terminal Wenn Sie versuchen, die Python -Version in Linux Terminal anzuzeigen, geben Sie Python ein ...

Bei der Verwendung von Pythons Pandas -Bibliothek ist das Kopieren von ganzen Spalten zwischen zwei Datenrahmen mit unterschiedlichen Strukturen ein häufiges Problem. Angenommen, wir haben zwei Daten ...

In dem Artikel werden beliebte Python-Bibliotheken wie Numpy, Pandas, Matplotlib, Scikit-Learn, TensorFlow, Django, Flask und Anfragen erörtert, die ihre Verwendung in wissenschaftlichen Computing, Datenanalyse, Visualisierung, maschinellem Lernen, Webentwicklung und h beschreiben

Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen an? Uvicorn ist ein leichter Webserver, der auf ASGI basiert. Eine seiner Kernfunktionen ist es, auf HTTP -Anfragen zu hören und weiterzumachen ...

Wie erstellt in Python ein Objekt dynamisch über eine Zeichenfolge und ruft seine Methoden auf? Dies ist eine häufige Programmieranforderung, insbesondere wenn sie konfiguriert oder ausgeführt werden muss ...

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

Fastapi ...

Regelmäßige Ausdrücke sind leistungsstarke Tools für Musteranpassung und Textmanipulation in der Programmierung, wodurch die Effizienz bei der Textverarbeitung in verschiedenen Anwendungen verbessert wird.
