Du hast da einen `UnicodeEncodeError`, zu dem Zeitpunkt ist der Webseiteninhalt also anscheinend schon erfolgreich dekodiert worden.
Die Frage ist also wobei Du diesen Fehler bekommst.
Encoding, Zeichenwert rauskriegen
Kann es sein, dass read() noch 3 Zeichen vor den eigentlichen Text stellt.. ? Ohne es jetzt ausgiebig getestet zu haben und das ich es gleich revidiere: Daten[3:] scheint sich problemlos encodieren zu lassen und es fehlt auch nichts vom Text
Daten = urllib2.urlopen(urllib2.Request(Url, Parameter, Header)).read(); return Daten
Daten = urllib2.urlopen(urllib2.Request(Url, Parameter, Header)).read(); return Daten
Das ist kein Hakenkreuz - Das ist das neue Python-Symbol!
Nein das kann nicht sein. `read()` liest nur das was der Webserver auch sendet.
Wobei ich mich hier wieder frage was Du *en*kodierst? `Daten` sind *Bytes* die kann man, zumindest was Unicode angeht, nur sinnvoll *de*kodieren.
Ich glaube Du solltest Dich wirklich mal mit dem Thema Unicode und Kodierungen beschäftigen und aufhören einfach nur wild herum zu probieren.
Wobei ich mich hier wieder frage was Du *en*kodierst? `Daten` sind *Bytes* die kann man, zumindest was Unicode angeht, nur sinnvoll *de*kodieren.
Ich glaube Du solltest Dich wirklich mal mit dem Thema Unicode und Kodierungen beschäftigen und aufhören einfach nur wild herum zu probieren.
BlackJack hat geschrieben:Wobei ich mich hier wieder frage was Du *en*kodierst? `Daten` sind *Bytes* die kann man, zumindest was Unicode angeht, nur sinnvoll *de*kodieren.
Stimmt, sagt ja schon die Fehlermeldung: `UnicodeDecodeError`
Das ist kein Hakenkreuz - Das ist das neue Python-Symbol!
hab auch mal eine Funktion erstellt die ganze Sätze umwandelt.
Ist zwar sinlos, aber egal:
und ein beispiel:
Ist zwar sinlos, aber egal:
Code: Alles auswählen
def str2char(string):
end=""
for element in string:
end=end+"/"+hex(ord(element))
return end
Code: Alles auswählen
>>> str2char("ein Satz mit Umlauten und Zeichen: öäü°!\"§$%&/()=")
'/0x65/0x69/0x6e/0x20/0x53/0x61/0x74/0x7a/0x20/0x6d/0x69/0x74/0x20/0x55/0x6d/0x6c/0x61/0x75/0x74/0x65/0x6e/0x20/0x75/0x6e/0x64/0x20/0x5a/0x65/0x69/0x63/0x68/0x65/0x6e/0x3a/0x20/0xf6/0xe4/0xfc/0xb0/0x21/0x22/0xa7/0x24/0x25/0x26/0x2f/0x28/0x29/0x3d'
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
;-)
Nein, aber dein Editor, mit dem du die Seite erzeugt hast, die der Webserver ausliefert, hat da einen BOM geschrieben. Das Ding wird eigentlich nur benötigt, um UTF-16LE und UTF-16BE bzw. UTF-32LE und UTF-32BE zu unterscheiden, manchmal kann man es aber auch benutzen, um UTF-8 überhaupt zu erkennen, denn U+FEFF ist kein sichtbares Zeichen.Bong-Jour hat geschrieben:Kann es sein, dass read() noch 3 Zeichen vor den eigentlichen Text stellt.. ?
Das gehört da aber IMHO nicht hin. Der Webserver sollte das Encoding im HTTP-Header definieren.
Stefan
Ich bedanke mich für den Tipp mit dem BOM
(Leute mit einenr minimalen Immunität gegen Aluminium leiden wohl eher unter einer minimalen Aluminiumimmunität. Du kannst doch nicht das Adjektiv da rein "ballern" ^^)
(Leute mit einenr minimalen Immunität gegen Aluminium leiden wohl eher unter einer minimalen Aluminiumimmunität. Du kannst doch nicht das Adjektiv da rein "ballern" ^^)
Das ist kein Hakenkreuz - Das ist das neue Python-Symbol!