Top Banner
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 10: ordinal not in range(128) UnicodeEncodeError: 'ascii' codec can't encode characters in position 3-8: ordinal not in range(128) ¿Os ha pasado alguna vez? miércoles 31 de julio de 2013
19

Geoinquietos Madrid - Python 2.x y los encodings

Jul 29, 2015

Download

Engineering

Jorge Arevalo
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Geoinquietos Madrid - Python 2.x y los encodings

UnicodeDecodeError: 'ascii' codeccan't decode byte 0xc4 in position10: ordinal not in range(128)

UnicodeEncodeError: 'ascii' codeccan't encode characters in position3-8: ordinal not in range(128)

¿Os ha pasado alguna vez?

miércoles 31 de julio de 2013

Page 2: Geoinquietos Madrid - Python 2.x y los encodings

Fundamental

El texto plano NO EXISTE

(y no son los padres)

miércoles 31 de julio de 2013

Page 3: Geoinquietos Madrid - Python 2.x y los encodings

Encoding

Una cadena de texto no tiene sentido si no especificamos qué encoding se

está usando para mostrarla

miércoles 31 de julio de 2013

Page 4: Geoinquietos Madrid - Python 2.x y los encodings

Encoding

Conjunto de reglas que asignan valores numéricos a cada carácter de texto

miércoles 31 de julio de 2013

Page 5: Geoinquietos Madrid - Python 2.x y los encodings

Problema en Python 2.x

Python 2.x usa por defecto encoding ASCII

(o sea, que no sabe qué hacer con los caracteres cuya representación es un byte mayor que 127)

miércoles 31 de julio de 2013

Page 6: Geoinquietos Madrid - Python 2.x y los encodings

Encoding ASCII

miércoles 31 de julio de 2013

Page 7: Geoinquietos Madrid - Python 2.x y los encodings

¿Qué hacemos?

Usar otro encoding (Python 2.x soporta más de 100)

miércoles 31 de julio de 2013

Page 8: Geoinquietos Madrid - Python 2.x y los encodings

Otros encodings

miércoles 31 de julio de 2013

Page 9: Geoinquietos Madrid - Python 2.x y los encodings

Otros encodings

miércoles 31 de julio de 2013

Page 10: Geoinquietos Madrid - Python 2.x y los encodings

¿Cuál elegir?

UTF-8

Longitud variable, soporte completo de Unicode

miércoles 31 de julio de 2013

Page 11: Geoinquietos Madrid - Python 2.x y los encodings

Unicode

Mapea caracteres con “code points”, no con enteros (1 - 127).

Hay 1.114.122 puntos de código (capaz de representar cualquier lenguaje)

miércoles 31 de julio de 2013

Page 12: Geoinquietos Madrid - Python 2.x y los encodings

Unicode

miércoles 31 de julio de 2013

Page 13: Geoinquietos Madrid - Python 2.x y los encodings

UnicodeIan Albert

22017x42807 px

miércoles 31 de julio de 2013

Page 14: Geoinquietos Madrid - Python 2.x y los encodings

Unicode y Python 2.x

miércoles 31 de julio de 2013

Page 15: Geoinquietos Madrid - Python 2.x y los encodings

Unicode y Python 2.x

Str: secuencia de bytesUnicode: secuencia de codepoints

miércoles 31 de julio de 2013

Page 16: Geoinquietos Madrid - Python 2.x y los encodings

Unicode y Python 2.x

Python intenta transformar texto en Unicode de manera automática

miércoles 31 de julio de 2013

Page 17: Geoinquietos Madrid - Python 2.x y los encodings

Unicode <-> Str

miércoles 31 de julio de 2013

Page 18: Geoinquietos Madrid - Python 2.x y los encodings

Cómo trabajar

• 1. Decode early

• 2. Unicode everywhere

• 3. Encode late

miércoles 31 de julio de 2013