h1

Python Unicode String Encoding

September 28, 2008

Schon hundertmal habe ich mich mit Fehlern rumgeschlagen, die ungefähr so aussahen:

UnicodeDecodeError: ‚ascii‘ codec can’t decode byte 0xe4 in position 3: ordinal not in range(128)

Jetzt hab ich das Prinzip endlich verstanden: Wenn man von externen Quellen, zum Beispiel einer Webseite, einen String hat, dann muss man diesen encodieren und als Parameter nicht das gewünschte Format, sondern das Format angeben, welches der String hat (meistens dann utf8).

Beispiel:

print status.user.name.encode(‚utf8‘)

Die Strings werden standardmäßig immer in Ascii umgewandelt, dieses Verhalten kann man aber auch ändern, und zwar wie folgt:

import sys
sys.setdefaultencoding(‚utf8‘)

3 Kommentare

  1. Ahh ok das klingt sehr einleuchtend =) =)
    Supi😀


  2. Was genau ist daran falsch? Habe nicht die Zeit mir jetzt diese Textmassen durchzulesen, vorallem weil ich diese Codeschnipsel direct in meinen Programmen verwende und es gut funktioniert.
    Die Quelle meiner Informationen dazu ist übrignes „Dive into Python“, was auch als Buch erschienen ist: http://diveintopython.org/xml_processing/unicode.html

    Ich würde mich über eine Antwort freuen!



Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: