Sto provando a stampare una stringa unicode senza l'esadecimale di codifica specifico. Sto prendendo questi dati da Facebook che ha un tipo di codifica nelle intestazioni HTML di UTF-8. Quando stampo il tipo - dice il suo unicode, ma poi quando provo a decodificarlo con unicode-escape dice che c'è un errore di codifica. Perché sta cercando di codificare quando utilizzo il metodo di decodifica?La funzione di decodifica tenta di codificare Python
Codice
a='really long string of unicode html text that i wont reprint'
print type(a)
>>> <type 'unicode'>
print a.decode('unicode-escape')
>>> Traceback (most recent call last):
File "scfbp.py", line 203, in myFunctionPage
print a.decode('unicode-escape')
UnicodeEncodeError: 'ascii' codec can't encode character u'\u20ac' in position 1945: ordinal not in range(128)
Questo non è il motivo del suo errore. Sta cercando di decodificare un oggetto Unicode. Dal momento che decodificate da dati binari a dati unicode, Python 2 lo * prima codificherà *, cosa che fa con il codec ascii. Questo è ciò che sta fallendo. –
@Lennart Regebro: In realtà sospetto che il tipo effettivo della sua stringa sia 'str', non' unicode'. Guarda come sta inizializzando la stringa - nota che non c'è "u". Penso che quello che ha non sia una stringa unicode, ma una stringa * unicode-escape * (non la stessa cosa!). È questo che sta cercando di decodificare in unicode. Se la mia teoria è giusta, allora penso che questa risposta sia effettivamente corretta. –
@Mark Byers: è vero, è incoerente, ma perdere u è più semplice che digitare il tipo sbagliato. :) E l'errore è coerente con quello che fa. Se decodificate un oggetto Unicode, ottenete un errore di codifica. –