Seite 1 von 1

Encoding Problem Ascii in Utf-8

Verfasst: Mittwoch 13. August 2008, 09:18
von Albert
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

Verfasst: Mittwoch 13. August 2008, 09:29
von audax
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.

Verfasst: Mittwoch 13. August 2008, 09:55
von Albert
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.

Verfasst: Mittwoch 13. August 2008, 10:06
von Leonidas
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].

Verfasst: Mittwoch 13. August 2008, 10:33
von Albert
Super, hat geklappt! Vielen Dank für euere Hilfe

Grüße Albert

Verfasst: Mittwoch 13. August 2008, 11:19
von audax
Du solltest deiner Datenbank aber eigentlich sagen können, welches Encoding sie nutzen soll, damit sie dir dann unicode-strings gibt.