String encoden

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
ignis-draco
User
Beiträge: 15
Registriert: Freitag 25. Februar 2011, 12:33

Hi


ich bin momentan dabei ein Tool zu schreiben das meine Serien überarbeitet in dem es den Datei Namen ändert.
Dafür benötige die Inhalt einer Website leider habe ich da Probleme mit der String Codierung.

Den Inhalt der Website lade ich momentan mit folgenden Zeilen runter.

Code: Alles auswählen

import urllib.request

def getNewSerie(url):
	Serien = {}
	httpSite = urllib.request.urlopen(url)
	content = str(httpSite.read())
	httpSite.close()
Die Ausgabe mit print sieht aber leider so aus "J\xe4ger und Gejagte".
Im Quelltext der Internet Seite steht "charset=iso-8859-1".
Deswegen habe ich das print duch

Code: Alles auswählen

sys.stdout.buffer.write(out.encode('latin_1'))
ersetzt. Leider ohne erfolg.

Jetzt weiß ich leider nicht mehr weiter wie ich das Problem lösen kann. Auch in der docu steht leider nichts drin.
Hatte gedacht das man " urllib.request" sagen könnte welches encodeing benutz werden soll.

Welche Möglichkeiten hätte ich sonst noch das Problem mit den Umlauten zu lösen ohne per Hand suchen und ersetzten in allen Strings zu machen ?

Freue mich über jede Hilfe.

Gruß
Ignis-Draco
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Wenn Du encodierte Daten hast, dann solltest Du sie intern in Unicode wandeln. Wenn Du diese dann wieder serialisierst, kannst Du sie quasi beliebig encodieren. Lies Dir dazu mal die Links in meiner Signatur durch.

Du versuchst bereits encodierte Daten weiter zu encodieren - das ist wenig sinnvoll.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten