Ich arbeite durch die Django RSS-Reader-Projekt here.Codierung gibt "Ascii" Codec kann nicht codieren ... Ordinal nicht im Bereich (128) "
Der RSS-Feed wird etwas wie "OKLAHOMA CITY (AP) - James Harden lassen" lesen. Die Kodierung des RSS-Feeds lautet encoding = "UTF-8", daher glaube ich, dass ich utf-8 im unten stehenden Code-Snippet übergebe. Der em Strich ist, wo er würgt.
Ich bekomme den Django-Fehler von "Ascii 'Codec kann nicht codieren Zeichen u' \ u2014 'in Position 109: Ordnungszahl nicht im Bereich (128)" was ist ein UnicodeEncodeError. In den Variablen, die übergeben werden, sehe ich "OKLAHOMA CITY (AP) \ u2014 James Harden". Die Codezeile, die nicht funktioniert ist:
content = content.encode(parsed_feed.encoding, "xmlcharrefreplace")
Ich verwende Abschlag 2.0, django 1.1 und Python 2.4.
Was ist die magische Sequenz von Kodierung und Dekodierung, die ich tun muss, damit dies funktioniert?
(Als Reaktion auf Prometheus' Anfrage. Ich bin damit einverstanden hilft die Formatierung)
So in Aussicht ich eine smart_unicode Zeile oberhalb der parsed_feed Codierung Zeile hinzufügen ...
content = smart_unicode(content, encoding='utf-8', strings_only=False, errors='strict')
content = content = content.encode(parsed_feed.encoding, "xmlcharrefreplace")
Dies drückt das problem zu meinem models.py für mich wo ich habe
def save(self, force_insert=False, force_update=False):
if self.excerpt:
self.excerpt_html = markdown(self.excerpt)
# super save after this
Wenn ich die save-methode zu ändern habe. ..
def save(self, force_insert=False, force_update=False):
if self.excerpt:
encoded_excerpt_html = (self.excerpt).encode('utf-8')
self.excerpt_html = markdown(encoded_excerpt_html)
ich den Fehler bekommen: es liest " 'ascii' Codec 0xE2 in Position 141 dekodieren kann nicht Byte ordinal nicht in Reichweite (128)" weil jetzt "\ XE2 \ x80 \ x94" wo der em Strich war
könnten Sie bitte die Zurückverfolgungs schreiben, wie sie ist? – tzot
Was ist der Wert von 'parsed_feed.encoding'? Ist es "ascii", per Zufall? (das würde beide Fehler erklären). – tzot