Probabilmente il problema è che l'hai analizzato bene, e ora stai provando a stampare il contenuto dell'XML e non puoi perché ci sono alcuni caratteri Unicode stranieri. Provare per codificare la stringa Unicode come ASCII prima:
unicodeData.encode('ascii', 'ignore')
la parte 'ignorare' lo dirà di saltare quei personaggi. Dalla documentazione pitone:
>>> u = unichr(40960) + u'abcd' + unichr(1972)
>>> u.encode('utf-8')
'\xea\x80\x80abcd\xde\xb4'
>>> u.encode('ascii')
Traceback (most recent call last):
File "<stdin>", line 1, in ?
UnicodeEncodeError: 'ascii' codec can't encode character '\ua000' in position 0: ordinal not in range(128)
>>> u.encode('ascii', 'ignore')
'abcd'
>>> u.encode('ascii', 'replace')
'?abcd?'
>>> u.encode('ascii', 'xmlcharrefreplace')
'ꀀabcd޴'
Si potrebbe desiderare di leggere questo articolo: http://www.joelonsoftware.com/articles/Unicode.html, che ho trovato molto utile come un tutorial di base su quello che sta succedendo. Dopo la lettura, smetterai di sentire che stai solo indovinando quali comandi usare (o almeno quello che è successo a me).
fonte
2010-07-11 19:10:51
Stavo solo venendo a SO per pubblicare questa domanda. C'è un modo semplice per disinfettare una stringa per 'unicode()'? –
Controlla anche [this] (http://stackoverflow.com/questions/3224427/python-sanitize-a-string-for-unicode/3224890#3224890) rispondi a una domanda correlata: "Python UnicodeDecodeError - Mi capita di non capire ?” – tzot