Notícias
Novos modelos de linguagem da API Serverspace GPT
JT
outubro 17, 2023
Atualizado janeiro 31, 2025

Como trabalhar com Unicode em Python?

Python

O que é isso?

O Unicode serve como um padrão de codificação de caracteres que abrange praticamente todos os idiomas escritos em todo o mundo e é atualmente o padrão dominante para a Internet.

Em sua essência, o Unicode é uma abordagem sistemática para representar o texto de forma linear. A cada caractere Unicode é atribuído um código exclusivo, um número inteiro que varia de 0 a 1.114.111. Esses códigos desempenham um papel fundamental na representação de caracteres em sistemas de computador, incluindo sistemas operacionais, navegadores da Web e vários aplicativos.

O Unicode apresenta várias vantagens quando comparado a sistemas alternativos de codificação de caracteres, como ASCII e ISO 8859-1. Ele oferece suporte abrangente para uma vasta gama de caracteres, cobrindo todas as línguas escritas do mundo. Além disso, o suporte do Unicode para códigos multibyte permite a representação de caracteres complexos, como hieróglifos.

Mas é preciso ressaltar que o Unicode não é um algoritmo de código, mas sim um conjunto de pontos de código, como um banco de dados de indicadores. Portanto, existem algoritmos de código que usam essa base, por exemplo: UTF-8, UTF-16, UTF-32, UCA, BIDI, etc.

Como usá-lo?

Python já suporta Unicode e tem no modelo padrão o algoritmo UTF-8/16/32, devemos usar várias instruções .encode e .decode para converter dados:

print("That’s data!".encode("utf-16"))
#Output b'xffxfeTx00hx00ax00tx00 x00ix00sx00 x00dx00ax00tx00ax00!x00'

Na saída, podemos ver um conjunto de dados separados por um sinal de barra e x é um sistema de codificação de 16 bits. Também podemos decodificar em letras latinas com o comando:

print(b'xffxfeTx00hx00ax00tx00 x00ix00sx00 x00dx00ax00tx00ax00!x00'.decode("utf-16"))
#Output 'That is data!'

Como destacamos anteriormente, o Unicode, portanto o UTF-8, é compatível com letras árabes, hieróglifos e a maior parte da linguagem escrita:

print("العربية".encode("utf-16"))
#Output b"xffxfe'x06Dx069x061x06(x06Jx06)x06"

E da mesma forma que descrevemos acima - decodificar:

print(b"xffxfe'x06Dx069x061x06(x06Jx06)x06".decode("utf-16"))
#Output 'العربية'

Além disso, você pode não identificar o algoritmo para converter o valor, por exemplo:

print("Hi, my name is Jhon!".encode())
#Output b'Hi, my name is Jhon!'

E decodificar da mesma forma:

print(b'Hi, my name is Jhon!'.decode())
#Output 'Hi, my name is Jhon!'

Há um método que permite exibir o valor dos dados convertidos para o sistema de cálculo decimal:

print(list(b"xffxfe'x06Dx069x061x06(x06Jx06)x06"))
#Output [255, 254, 39, 6, 68, 6, 57, 6, 49, 6, 40, 6, 74, 6, 41, 6]

A lista pode ser útil em diferentes cenários para seu programa e utilitário. No entanto, nem todos os algoritmos usam Unicode da mesma forma. Se tentarmos representar nossa mensagem de texto "Here's my data!" (Aqui estão meus dados!), obteremos várias respostas:

print("Here’s my data!".encode("utf-16"))
#Output b'xffxfeHx00ex00rx00ex00x19 sx00 x00mx00yx00 x00dx00ax00tx00ax00!x00'

E se tentarmos decodificar para utf-8 ou utf-32, veremos:

print(b'xffxfeHx00ex00rx00ex00x19 sx00 x00mx00yx00 x00dx00ax00tx00ax00!x00'.decode("utf-8"))
#Output UnicodeDecodeError: 'utf-8' codec can't decode
print(b'xffxfeHx00ex00rx00ex00x19 sx00 x00mx00yx00 x00dx00ax00tx00ax00!x00'.decode("utf-32"))
#Output UnicodeDecodeError: 'utf-32' codec can't decode

Nos dois casos, recebemos mensagens sobre a impossibilidade de decodificar os dados dessa forma!

Conclusão

O Unicode é um padrão fundamental de codificação de caracteres que abrange a vasta gama de idiomas escritos em todo o mundo, tornando-o o padrão dominante para a Internet. Essa abordagem sistemática atribui um código exclusivo a cada caractere Unicode, permitindo uma representação perfeita em vários sistemas e aplicativos de computador.

Avaliação:
5 fora de 5
Аverage rating : 5
Avaliado por: 2
CEP 01311-930 São Paulo Avenida Paulista, nº 1765, 7º andar, Cj. 72, CV 10172, Bela Vista
+ 55 11 5118-1047
ITGLOBAL.COM BR LTDA

Você também pode gostar...

Usamos cookies para melhorar sua experiência no Serverspace. Ao continuar a navegar em nosso site, você concorda com o Uso de Cookies e com a Política de Privacidade.