utf8 unicodeencodeerror python3 python unicode

unicodeencodeerror - unicode() python3



unicode(). decode(''utf-8'', ''ignorar'') elevando UnicodeEncodeError (3)

Cuando empecé a jugar con cadenas de python y Unicode, me tomó un tiempo entender la jerga de decodificar y codificar también, así que aquí está mi publicación de here que puede ayudar:

Piensa en decodificar como lo que haces para pasar de una cadena de bytes a unicode y a una codificación normales, como lo que haces para regresar de unicode. En otras palabras:

str un str para producir una cadena unicode

y en - codifica una cadena unicode para producir un str .

Asi que:

unicode_char = u''/xb0'' encodedchar = unicode_char.encode(''utf-8'')

encodedchar contendrá su carácter Unicode, que se muestra en la codificación seleccionada (en este caso, utf-8 ).

Aquí está el código:

>>> z = u''/u2022''.decode(''utf-8'', ''ignore'') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.6/encodings/utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeEncodeError: ''latin-1'' codec can''t encode character u''/u2022'' in position 0: ordinal not in range(256)

¿Por qué se genera UnicodeEncodeError cuando estoy usando .decode?

¿Por qué se genera un error cuando uso ''ignorar''?


Desde http://wiki.python.org/moin/UnicodeEncodeError

Paradójicamente, puede ocurrir UnicodeEncodeError al decodificar . La causa de esto parece ser las funciones de decodificación específicas de codificación () que normalmente esperan un parámetro de tipo str. Parece que al ver un parámetro Unicode, el decodificador () funciona "convertir a la baja" en str, luego decodificar el resultado suponiendo que sea de su propia codificación. También parece que la "conversión descendente" se realiza utilizando el codificador ASCII. De ahí una falla de codificación dentro de un decodificador.


Está intentando decodificar un unicode . La codificación implícita para hacer que funcione el decodificador es lo que está fallando.