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

  • Wie man chinesisches Wort zeigt, nicht Unicode-Wort
  • Python UTF-8 Text kommt deformiert auf Android
  • Konvertieren Sie UTF-8-Oktette zu Unicode-Codepunkten
  • Hash Unicode String in Python
  • Python UTF-8 Umwandlungsproblem
  • Python, wie man Unicode mit Hex-Zeichen decodiert
  • Python konvertieren und speichern Unicode-String in eine Liste
  • Mongodb Einfügung zeigt 'Strings in Dokumente muss gültig sein UTF-8'
  • UTF-8 HTML- und CSS-Dateien mit Stückliste (und wie man die Stückliste mit Python entfernt)
  • Was ist der Unterschied zwischen u '' Präfix und Unicode () in Python?
  • UTF-8 Problem in Python beim Lesen von Zeichen
  • Python ist die beste Programmiersprache der Welt.