Estoy tratando de imprimir una cadena Unicode sin el hex específico de codificación. Estoy tomando estos datos de Facebook que tiene un tipo de codificación en los encabezados html de UTF-8. Cuando imprimo el tipo, dice que es unicode, pero cuando intento decodificarlo con unicode, escape dice que hay un error de codificación. ¿Por qué está tratando de codificar cuando uso el método de decodificación?La función de decodificación intenta codificar Python
Código
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)
Esta no es la razón de su error. Él está tratando de decodificar un objeto Unicode. Como usted decodifica datos binarios a datos unicode, Python 2 primero * codificará * it, lo cual hará con el códec ascii. Eso es lo que está fallando. –
@Lennart Regebro: en realidad, sospecho que el tipo real de su cadena es 'str', no' unicode'. Mira cómo está inicializando la cuerda: fíjate que no hay 'u'. Creo que lo que tiene no es una cadena unicode, sino una cadena * unicode-escaped * (¡no es lo mismo!). Esto es lo que intenta decodificar para unicode. Si mi teoría es correcta, entonces creo que esta respuesta es realmente correcta. –
@Mark Byers: Es cierto, eso es inconsistente, pero omitir u es más fácil que escribir el tipo incorrecto. :) Y el error es consistente con lo que hace. Si decodifica un objeto Unicode, obtiene un error de codificación. –