Konvertiere UTF-8 in String-Literale in Python

Ich habe eine Zeichenfolge im UTF-8-Format, aber nicht so sicher, wie man diese Zeichenfolge in das entsprechende Zeichen-Literal umwandelt. Zum Beispiel habe ich die Saite:

Meine Saite ist: 'Entre\xc3\xa9'

Beispiel 1:

Dieser Code:

 u'Entre\xc3\xa9'.encode('latin-1').decode('utf-8') 

u'Entre\xe9' das Ergebnis zurück: u'Entre\xe9'

Wenn ich dann fortfahre:

 print u'Entre\xe9' 

Ich bekomme das Ergebnis: Entreé

Das ist toll und nah an dem, was ich brauche. Das Problem ist, ich kann nicht machen 'Entre \ xc3 \ xa9' eine Variable und übergeben Sie es durch die Schritte, wie dies jetzt bricht. Irgendwelche Tipps für das Erhalten dieser Arbeit?

Beispiel:

 a = 'Entre\xc3\xa9' b = 'u'+ a.encode('latin-1').decode('utf-8') c= 'u'+ b 

Ich möchte das Ergebnis von "c" sein:

 Entreé 

One Solution collect form web for “Konvertiere UTF-8 in String-Literale in Python”

Die u'' Syntax funktioniert nur für String-Literale , zB Definition von Werten im Quellcode. Mit der Syntax ergibt sich ein unicode Objekt, das erstellt wird, aber das ist nicht der einzige Weg, um ein solches Objekt zu erstellen.

Sie können nicht einen unicode Wert aus einem Byte-String machen, indem Sie sie davor hinzufügen. Aber wenn du str.decode() mit der richtigen Codierung angerufen str.decode() , bekommst du einen unicode Wert. Umgekehrt können Sie unicode Objekte zu Byte-Strings mit unicode.encode() verschlüsseln .

Beachten Sie, dass bei der Anzeige eines unicode Objekts Python es mit der Unicode-String-Literalsyntax wieder (also u'...' ) darstellt, um das Debugging zu erleichtern. Sie können die Darstellung wieder in einen Python-Interpreter einfügen und ein Objekt mit demselben Wert erhalten.

Ihr Wert wird mit einem Byte String Literal definiert, also müssen Sie nur decodieren:

 a = 'Entre\xc3\xa9' b = a.decode('utf8') 

Ihr erstes Beispiel erstellt eine Mojibake , eine Unicode-Zeichenfolge mit Latin-1-Codepoints, die tatsächlich UTF-8 Bytes darstellen. Aus diesem Grund musst du zuerst auf Latin-1 kodieren (um den Mojibake rückgängig zu machen), dann von UTF-8 zu entschlüsseln.

Vielleicht möchten Sie auf Python und Unicode im Unicode HOWTO lesen . Weitere interessante Artikel sind:

  • Das Absolute Minimum Jeder Software-Entwickler Absolut, muss positiv über Unicode und Zeichensätze (keine Entschuldigungen!) Von Joel Spolsky wissen

  • Pragmatische Unicode von Ned Batchelder

  • Mit pyodbc auf Linux, um Unicode oder utf-8 Zeichen in einem nvarchar mssql Feld einzufügen
  • Teste einen String, wenn es Unicode ist, welcher UTF-Standard ist und seine Länge in Bytes bekommt?
  • Konvertieren von Unicode in Python
  • Wie man chinesisches Wort zeigt, nicht Unicode-Wort
  • Wie überprüfe ich, ob ein String unicode oder ascii ist?
  • Python - Lesen aller Arten von Dateien in verschiedenen Kodierungen
  • Kauderwelsch aus urlopen
  • Konvertieren Sie UTF-8 mit Stückliste in UTF-8 ohne Stückliste in Python
  • Schreiben von utf-8 String in meine Python-Dateien
  • Python-Codierung - Konnte nicht zu utf8 decodieren
  • UnicodeDecodeError bei der Ausführung von os.walk
  • Python ist die beste Programmiersprache der Welt.