Sto lavorando al progetto di lettore RSS Django here.La codifica indica che il codec "ascii" non può codificare il carattere ... ordinale non compreso nell'intervallo (128) "
Il feed RSS leggerà qualcosa come "OKLAHOMA CITY (AP) - James Harden let". La codifica del feed RSS legge encoding = "UTF-8", quindi credo di passare utf-8 al markdown nel frammento di codice qui sotto. Il cruscotto è dove soffoca.
Ottengo l'errore Django del codec "ascii" non è in grado di codificare il carattere u '\ u2014' nella posizione 109: ordinale non nell'intervallo (128) "che è un UnicodeEncodeError. Nelle variabili che vengono passate vedo "OKLAHOMA CITY (AP) \ u00262 James Harden". La riga di codice che non funziona è:
content = content.encode(parsed_feed.encoding, "xmlcharrefreplace")
Sto usando Markdown 2.0, 1.1 Django e Python 2.4.
Qual è la sequenza magica di codifica e decodifica che devo fare per farlo funzionare?
(In risposta alla richiesta di Prometeo. Sono d'accordo la formattazione aiuta)
Quindi, in vista ho aggiungere una linea smart_unicode al di sopra della linea di codifica parsed_feed ...
content = smart_unicode(content, encoding='utf-8', strings_only=False, errors='strict')
content = content = content.encode(parsed_feed.encoding, "xmlcharrefreplace")
Questo spinge il problema al mio models.py per me dove ho
def save(self, force_insert=False, force_update=False):
if self.excerpt:
self.excerpt_html = markdown(self.excerpt)
# super save after this
Se cambio il metodo di salvataggio in modo da avere. ..
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)
ottengo l'errore "codec 'ascii' non può decodificare byte 0xE2 in posizione 141: non ordinale gamma (128)" perché ora si legge "\ xe2 \ x80 \ x94" dove la lineetta era
la prego di inviare il traceback così com'è? – tzot
Fondamentalmente, qual è il valore di 'parsed_feed.encoding'? E '' ascii ', per caso? (questo spiegherebbe entrambi i tuoi errori). – tzot