30-noviembre-2015
admin

Python throws UnicodeEncodeError

Documentación oficial Caracteres Unicode en Python

Ejemplo:

'''
   Se declara una variable con caracteres unicode
'''
>>> u = unichr(40960) + u'abcd' + unichr(1972)
>>> u.encode('utf-8')
'\xea\x80\x80abcd\xde\xb4'


'''
   Se aplica un encode ASCII para la conversión de la variable. 
   Se puede ver que falla.
'''
>>> u.encode('ascii')                       
Traceback (most recent call last):
    ...
UnicodeEncodeError: 'ascii' codec can't encode character u'\ua000' in
position 0: ordinal not in range(128)


'''
   Se vuelve a aplicar diciéndole que ignore los caracteres unicode
   superiores a los 8 bits (127)
'''
>>> u.encode('ascii', 'ignore')
'abcd'


'''
   Se vuelve a aplicar diciéndole que reemplace esos carácteres por 
   U+FFFD (REPLACEMENT CHARACTER)
'''
>>> u.encode('ascii', 'replace')
'?abcd?'


'''
   Se vuelve a aplicar reemplazándo esos caracteres por su equivalente html.
'''
>>> u.encode('ascii', 'xmlcharrefreplace')
'& #40960;abcd& #1972;'

Comentarios cerrados.

Categorias

Linkedin