Seite 1 von 1

Problem mit Unicode

Verfasst: Samstag 29. Januar 2005, 21:08
von xturbo77
Hallo,
also was Zeichenencodings angeht bin ich (leider) absoluter Laie.
Ich habe folgendes Problem: Ich parse eine XML Datei (encoding="UTF-8") und habe die XML Daten in einem Dictionary mit Strings. Sieht dann in etwa so aus:

Code: Alles auswählen

{u'Abrollen': (u'Merkmal', u'Geschicklichkeit', u'Abrollen'),
 u'Ausweichen': (u'Fertigkeit', u'Geschicklichkeit', u'Ausweichen'),
 u'Ball entreissen': (u'Fertigkeit', u'Allgeimein', u'Ball entreissen'),
 u'Ballgef\xfchl': (u'Fertigkeit', u'Allgeimein', u'Ballgef\xfchl'),
 u'Blocken': (u'Fertigkeit', u'Allgeimein', u'Blocken...'),
 u'Brutal': (u'Fertigkeit', u'Allgeimein', u'Brutal')}
Nun habe ich eine Methode mit der ich gerne auf ein Element zugreifen möchte, z.b. so:

Code: Alles auswählen

skillprops = self.skillparser.getSkill("Ballgefühl")
Leider bekomme ich immer einen KeyError.
Ok, dachte ich mir, wenn ich meiner Methode ebenfalls einen UTF8 Unicode String übergebe muss es ja klappen.

Code: Alles auswählen

skillprops = self.skillparser.getSkill(unicode("Ballgefühl", "utf8"))
Führt leider zur folgenden Fehlermeldung mit der ich momentan garnix anfangen kann :?

Code: Alles auswählen

UnicodeDecodeError: 'utf8' codec can't decode bytes in position 7-9: unexpected end of data
Was mach ich falsch?

Edit (Leonidas): Code in Python Tags gesetzt

Verfasst: Samstag 29. Januar 2005, 21:47
von Dookie
Hi xturbo77,

in was für einem encoding liegt denn dein Script vor? Wenn das kein utf-8 ist kann es so nicht funktionieren. Also verwende entweder einen Editor, der den Text als utf-8 speichern kann oder setze das richtige Encoding (bei Linux meist iso8859-1 bzw. Latin1) ein.

Gruß

Dookie

Verfasst: Sonntag 30. Januar 2005, 00:40
von Gast
Hi,

ja also, ich verwende Eclipse 3.0 und das Script liegt in Cp1252 vor.
Wenn ich das Encoding auf UTF-8 ändere funktionierts leider immer noch nicht
:cry:

Verfasst: Sonntag 30. Januar 2005, 01:03
von Dookie
Du musst schon das script auch als Unicode speichern, nicht nur das encoding ändern.
Oder versuchs mal so:

Code: Alles auswählen

skillprops = self.skillparser.getSkill(unicode("Ballgefühl", "Cp1252"))
Gruß

Dookie