Seite 1 von 1

Unicode in HTML Dokumenten

Verfasst: Samstag 17. Januar 2009, 20:18
von izaak
Hi first :-)

Ich hänge grad an einem Unicode Problem - mal wieder - vielleicht könnt ihr mir da helfen.

Ich versuche eine Webseite über httplib auslesen und auszuwerten. Leider kommen die Umlaute und diverse andere Sonderzeichen falsch bei mir an.
Das sieht dann ungefähr so aus:

Code: Alles auswählen

>>> a
'Bad T\xc3\xb6lz'
>>> print a
Bad Tölz
>>> 
(Das soll Bad Tölz heißen)
Dazu gibt es noch 2 Sachen zu sagen:
1. .encode gibt mir immer den Error: "UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 5: ordinal not in range(128)"
2. Das ganze sieht schon im Sniffer so aus - folglich schickt der Server den Salat so los.

Gibt es eine angenehmere Möglichkeit, das ganze wieder in lesbare Schrift zu verwandeln, als für jedes Zeichen string.replace zu benutzen?
Bin für jede Hilfe dankbar :-)

Grüße Izaak

Verfasst: Samstag 17. Januar 2009, 20:33
von Leonidas
Hallo izaak, willkommen im Forum,

Suche doch einfach im Forum nach Unicode - das ist ein Standardproblem, wenn man das falsche Encoding wählt, nichts weiter. Wurde schon in aller Ausführlichkeit, sogar diese Woche, ausdiskutiert.

Wenn du danach noch fragen hast, kannst du gerne nochmal fragen. Aber erstmal solltest du die bereits verfügbare Dokumentation im Forum und Wiki lesen.

Verfasst: Sonntag 18. Januar 2009, 08:26
von izaak
Mmmmh. Bevor ich etwas frage lese ich eigentlich immer ne ganze Weile nach, um zu gucken, ob das Problem schonmal aufgetreten ist (ich lese lieber als zu schreiben *gg*). Hab wohl diesmal entweder die falschen Suchbegriffe oder zu wenig Glück.
wenn man das falsche Encoding wählt
Ich komm ja gar nicht dazu, das encoding zu wählen... Der Server entscheidet sich halt, das Dokument in UTF-8 rauszuschicken und ich hätte aber lieber z.B. latin-1 ...
*forumsuchequäl*

edit: mmh find irgendwie nüscht. Vielleicht kannst du mir ja den Link mal posten, den du meinst.

Verfasst: Sonntag 18. Januar 2009, 10:02
von BlackJack
@izaak: Wenn Dir die Kodierung nicht passt, musst Du halt umkodieren.

Verfasst: Sonntag 18. Januar 2009, 10:17
von izaak
ok das klingt gut :D und wie stell ich das an? dachte das geht mit .encode("...")

Verfasst: Sonntag 18. Januar 2009, 10:30
von sma

Code: Alles auswählen

"\xc3\xb6".decode("utf-8")
Du hast ein Bytearray (das in Python < 3.0 leider wie ein String aussieht) welches du in einen String (der sich in Python < 3.0 leider als `unicode` und nicht `str` schreibt) dekodieren willst. Später, wenn du einen String wieder in ein Bytearray kodieren willst, benutzt du

Code: Alles auswählen

u"\u00f6".encode("utf-8")
Stefan

Verfasst: Sonntag 18. Januar 2009, 11:39
von izaak
Aaaah *clap* mein Held :lol:
Danke vielmals