Unicode in HTML Dokumenten

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
izaak
User
Beiträge: 4
Registriert: Samstag 17. Januar 2009, 20:03

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

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
izaak
User
Beiträge: 4
Registriert: Samstag 17. Januar 2009, 20:03

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.
BlackJack

@izaak: Wenn Dir die Kodierung nicht passt, musst Du halt umkodieren.
izaak
User
Beiträge: 4
Registriert: Samstag 17. Januar 2009, 20:03

ok das klingt gut :D und wie stell ich das an? dachte das geht mit .encode("...")
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
izaak
User
Beiträge: 4
Registriert: Samstag 17. Januar 2009, 20:03

Aaaah *clap* mein Held :lol:
Danke vielmals
Antworten