Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)

14
Matando (ou quase) Unicode(De|En)codeErrors No Python 2

description

 

Transcript of Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)

Page 1: Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)

Matando (ou quase) Unicode(De|En)codeErrors

No Python 2

Page 2: Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)

Para acabar (ou quase) com os erros é necessário

compreender o funcionamento

Page 3: Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)

Unicode: catálogo com todos os símbolos criados

pela humanidade

Page 4: Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)

Unicode é uma abstração

Page 5: Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)

código numérico ⇒

símbolo

Page 6: Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)

Computadores são reais e não abstratos,

então...

Page 7: Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)

Codificação / Encoding(UCS, UTF, ISO, ...)

Page 8: Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)

unicode.encode("utf-8") ⇒ strstr.decode("utf-8") ⇒ unicode

"abstrato" "real"

Internamente Python usa: UCS-2 ou 4

Page 9: Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)

Unicode é complicado

Page 10: Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)

Codificações são complicadas

Page 11: Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)

Python + Unicode + Codificações = CHAOS

Page 12: Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)

Adivinhar a codificação:impossível

Page 13: Matando (ou quase) Unicode(De|En)codeErrors (lightning talk)

Técnicas para descobrir

• Tentativa e erro

• BOM

• Accept-Charset

• <form accept-charset="???">

• Mais algumas outras...

• Use mais de uma abordagem