Encoding Problem Ascii in Utf-8

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.
Albert
User
Beiträge: 23
Registriert: Montag 29. Oktober 2007, 09:42

Encoding Problem Ascii in Utf-8

Beitragvon Albert » Mittwoch 13. August 2008, 09:18

Hi,
ich möchte das Encoding meiner Zeichenkette von Ascii auf Utf8 ändern.
Nun bekomme ich leider immer Fehlermeldungen sobald ich Sonderzeichen in meiner Zeichenkette habe.

Wie kann ich das Encoding meiner Zeichenkette in Utf8 ändern?

Code: Alles auswählen

>>> import sys
>>> import string
>>> a = 'Baden-Württemberg'
>>> sys.getdefaultencoding()
'ascii'
>>> a
'Baden-W\xfcrttemberg'
>>> b= a.encode("utf-8")

Traceback (most recent call last):
  File "<pyshell#60>", line 1, in <module>
    b= a.encode("utf-8")
UnicodeDecodeError: 'ascii' codec can't decode byte 0xfc in position 7: ordinal not in range(128)
>>>
>>> b = unicode(a, "utf-8")

Traceback (most recent call last):
  File "<pyshell#67>", line 1, in <module>
    b = unicode(a, "utf-8")
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 7-12: unsupported Unicode code range


Vielen Dank für eure Hilfe

Albert
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Beitragvon audax » Mittwoch 13. August 2008, 09:29

Oben in die Datei:

Code: Alles auswählen

 #-*- coding: utf-8 -*-


und dann im Code:

Code: Alles auswählen

a = u'Baden-Württemberg'


Dein `a` ist übrigens kein ASCII, das kann einfach keine Umlaute, deshalb klappt das nicht.
Albert
User
Beiträge: 23
Registriert: Montag 29. Oktober 2007, 09:42

Beitragvon Albert » Mittwoch 13. August 2008, 09:55

OK, so würde es Funktionieren.

Auf die Gefahr das ich mich jetzt richtig Blamiere. Wie kriege ich das 'u' vor meiner Zeichenkette?
Da mein ‚a’ ein Ergebnis aus einer Datenbankabfrage ist. Schaffe ich es nicht, das mein 'u' vor meiner Zeichenkette steht.
Zuletzt geändert von Albert am Mittwoch 13. August 2008, 10:33, insgesamt 1-mal geändert.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 13. August 2008, 10:06

Albert hat geschrieben:Auf die Gefahr das ich mich jetzt richtig Blamiere. Wie kriegt ich das 'u' vor meiner Zeichenkette?

Code: Alles auswählen

>>> 'Baden-Württemberg'.decode('latin-1')
u'Baden-W\xc3\xbcrttemberg'


Lesetipp: [wiki]Von Umlauten, Unicode und Encodings[/wiki].
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Albert
User
Beiträge: 23
Registriert: Montag 29. Oktober 2007, 09:42

Beitragvon Albert » Mittwoch 13. August 2008, 10:33

Super, hat geklappt! Vielen Dank für euere Hilfe

Grüße Albert
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Beitragvon audax » Mittwoch 13. August 2008, 11:19

Du solltest deiner Datenbank aber eigentlich sagen können, welches Encoding sie nutzen soll, damit sie dir dann unicode-strings gibt.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder