Problem mit Unicode

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
xturbo77
User
Beiträge: 39
Registriert: Montag 9. September 2002, 20:05
Kontaktdaten:

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
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

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
[code]#!/usr/bin/env python
import this[/code]
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:
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

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
[code]#!/usr/bin/env python
import this[/code]
Antworten