Blog

Postado em em 10 de dezembro de 2022

O que é Encoding? Já Ouviu Falar que o Computador só entende 0 e 1? Entenda Agora!

Você sabe o que é encoding? Já tentou abrir um texto e por algum motivo boa parte dele ficou com caracteres estranhos? Vem que eu te mostro!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

O que Significa Encoding?

Vamos lá, alguém já deve ter dito que o computador só entende 0 e 1? Ou algo do tipo certo?

Você já teve dúvidas a respeito disso?

É sobre isso que vamos falar hoje!

Para isso vamos precisar de um arquivo de texto, este arquivo que vamos usar esta disponível para download, é um arquivo simples com uma frase:

Texto de exemplo
Texto de exemplo

Observe que no texto da imagem acima temos um acento onde está escrito “o que é”.

Vamos usar um código no Python para extrair e printar este texto e quando fizermos isso, o código vai nos retornar um erro ou vamos notar uma parte do texto ilegível.

Para entender melhor o porquê deste erro, vamos explicar o que o nosso código está fazendo:

O que é encoding
With open.

Quando o código printa a frase contida no texto, vamos ver um erro na palavra “é”.

Este erro pode simplesmente aparecer ilegível ou com uma mensagem “UnidecodeError” por exemplo:

O que Significa Encoding?
UnidecodeError

Quando nós armazenamos uma informação de texto em algum lugar do computador, seja em uma variável ou pasta, banco de dados ou planilhas, seja aonde for, temos que entender que o computador não reconhece textos.

Isso mesmo! O computador além de não reconhecer textos também não reconhece números, para o computador tudo isso é uma sequência de zero e um:

0101010101010101010101010101….

Para exemplificar como o computador vê uma letra, a letra “a” pode ser vista assim -> 0110 0001.

De onde vem essa sequência de números? Como o computador sabe que determinada sequência representa a letra “a”?

É aqui que entra o Encoding, quando toda a lógica do computador estava sendo criada uma das primeiras coisas que inventaram foi uma tabela de “Sinais Gráficos (imprimíveis)”:

O que Significa Encoding?
Sinais gráficos imprimíveis.

Fonte: https://pt.wikipedia.org/wiki/ASCII

Nesta tabela temos o que cada sequência de zero e um significa:

00100000 significa (espaço) por exemplo.

Mas, temos um problema que surge devido ao computador enxergar as informações desta maneira…

O problema é que nesta tabela não temos caracteres como temos no português, o “a” com acento agudo, com til, com acento circunflexo, etc.

Por este motivo começaram a criar dezenas de padrões de Encoding, programadores brasileiros criaram um Encoding para o Brasil, os americanos criaram um para os Estados Unidos, os chineses para a China, etc.

O que isso causou foi a existência de vários padrões de escrita diferentes associados a mesma sequência de zero e um, uma sequência de “zero e um” no Brasil pode representar a letra “b” enquanto a mesma sequência na Irlanda representa outra letra e pode ser que a mesma sequência na China nem exista…

Por este motivo temos esses erros no código, se estivermos lendo um arquivo que está sendo processado por um padrão de Encoding diferente do correto para a linguagem do texto o resultado vai ser uma interpretação errada da sequência de zero e um que aquele texto possui, então ele mostra um caractere aleatório, ou uma mensagem de erro.

Padrão Unicode:

Você já viu estes códigos?

  • Utf-8
  • Utf-16
  • Utf-32

Estes são padrões Unicode, a lógica aqui é criar um único código que permita fazer traduções de qualquer coisa.

É possível traduzir do padrão americano para o português brasileiro passando pelo Unicode, por exemplo.

Se você observar a tabela do Unicode tem muito mais caracteres do que a tabela do Encoding, temos letras, símbolos, sinais, números, etc.

Decimal.
Decimal.

Fonte: https://en.wikipedia.org/wiki/List_of_Unicode_characters

Em termos práticos se o seu texto veio com caracteres desconhecidos ou com código de erro, isso não significa que os dados estão corrompidos, apenas não está com o padrão de Encoding correto para o texto que você está manipulando.

Opção de ajuste no Python:

Caso esse erro aconteça no seu código você consegue corrigir acrescentando o Encoding como na imagem abaixo -> dentro das aspas podemos colocar qualquer um dos padrões (codec) disponíveis na tabela de padrões do Python.

Ajuste.
Ajuste.

Tabela de padrão do Python:

Codec - Python.
Codec – Python.

Fonte: https://docs.python.org/3/library/codecs.html#standard-encodings

O padrão mais usado é o utf-8, se no exemplo desta aula passarmos este padrão para o código, já é o suficiente para que o texto seja exibido corretamente.

Mas e se eu não souber em que padrão o texto foi escrito? Como escolher o padrão correto se houver erro?

Normalmente os editores de texto tentam deixar esse padrão identificado, até mesmo no próprio bloco de notas:

UTF-8
UTF-8

Existem métodos dentro da linguagem de programação que tentam identificar este padrão, às vezes acertam, às vezes não…

Se a previsão errar, é necessário tentar novamente tomando o cuidado de não salvar uma informação no padrão errado e ler em outro formato, provavelmente você irá corromper aquela informação.

Você também consegue consultar a posição na lista de qualquer caractere dentro do Python usando o “ord”.

Pesquisa.
Pesquisa.

Na tabela de Encoding Python temos uma coluna chamada “decimal”, o caractere “ã” vai estar na posição 227 desta coluna. Assim é possível consultar qualquer caractere.

Esta é a importância de entendermos o que é Encoding, agora sabemos como corrigir estes erros e que não se trata de o arquivo estar corrompido.

Gostou da aula?

Quer aprender passo a passo como montamos o código para extrair textos de tabelas ou blocos no Python? Clique no link!

Conclusão – O que é Encoding

O objetivo desta aula foi mostrar o que é e para que serve o Encoding.

Saber o seu significado vai te ajudar a manipular textos de forma correta e a entender erros que acontecem quando trabalhamos com textos em programação.

Além disso, explicamos o conceito de Unicode, como pesquisar caracteres dentro do Python e como corrigir erros de textos ilegíveis ou de mensagens de erro.

Espero ter ajudado! Até a próxima! Abraço,

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador