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

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

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

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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

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

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

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