22 pontos por GN⁺ 2023-10-03 | 3 comentários | Compartilhar no WhatsApp
  • Há 20 anos, Joel enfatizou que “não existe Plain Text” e que é essencial entender codificação
  • Unicode é o padrão que unifica todas as línguas humanas para que possam ser usadas em computadores
  • Um sistema de code points que atribui um número único a cada caractere diferente
  • O maior code point é 0x10FFFF, oferecendo espaço para cerca de 1,1 milhão de code points
  • UTF-8 é a codificação mais comum, usada com 98% de probabilidade
  • UTF-8 é uma codificação de tamanho variável, em que code points podem ser codificados como sequências de 1 a 4 bytes
  • UTF-8 tem compatibilidade de bytes com ASCII e é eficiente em espaço para o latim básico
  • UTF-8 tem recursos embutidos de detecção e recuperação de erros, permitindo identificar sequências de bytes UTF-8 completas e válidas
  • Clusters de grafemas estendidos, ou grafemas, são a unidade que deve ser iterada, e não os code points
  • Unicode é atualizado todos os anos, e as regras que definem clusters de grafemas mudam anualmente
  • Unicode pode ser renderizado de forma diferente dependendo da localidade
  • Pares substitutos em Unicode são duas unidades UTF-16 usadas para codificar um único code point Unicode
  • UTF-16 ainda é usado em alguns sistemas como representação em memória
  • Strings Unicode devem ser normalizadas antes de serem comparadas
  • O artigo reforça a importância de usar bibliotecas Unicode até mesmo para operações básicas como strlen, indexOf e substring

3 comentários

 
kimws 2023-10-04

No caso de "‍♂️".length, o Python 3.11 retorna 1.

 
kimws 2023-10-04

O emoji está aparecendo quebrado nos comentários.

 
GN⁺ 2023-10-03
Comentários do Hacker News
  • Este artigo discute a complexidade do Unicode e como utilizá-lo no desenvolvimento de software.
  • Um comentarista discorda da afirmação do artigo de que "clusters de grafemas estendidos" são a melhor forma de pensar sobre os caracteres no Unicode, e argumenta que a definição de "caractere" pode variar conforme o uso pretendido.
  • O comentarista sugere que a iteração sobre strings deve ser baseada em pontos de código, que são o nível fundamental em que o Unicode opera.
  • Outro comentarista elogia o artigo e responde à pergunta do autor sobre por que a ligadura "fi" tem seu próprio ponto de código, explicando que isso se deve ao princípio de compatibilidade de legado do Unicode.
  • Um comentarista reclama de ver vários ponteiros de mouse na tela enquanto lê a página.
  • Outro comentarista discute o desafio de configurar a localidade do computador quando o usuário consegue ler e escrever em vários idiomas, e critica o Linux por ter menos opções de personalização em comparação com o Windows.
  • Um comentarista compartilha uma história sobre ter enfrentado problemas ao sanitizar entradas de usuários para sistemas de terceiros por causa da forma como caracteres acentuados são tratados.
  • Outro comentarista rebate a afirmação do artigo de que pontos de código não são a melhor unidade para se trabalhar, argumentando que há muitas situações em que operar em pontos de código faz sentido.
  • Um comentarista critica o exemplo do artigo sobre como "é" é codificado no Unicode, alegando que ele é enganoso e não representa a forma como os caracteres normalmente são codificados.
  • Outro comentarista discute o problema de logogramas chineses, japoneses e coreanos receberem o mesmo ponto de código, o que leva à má renderização de nomes de arquivos em chinês no Windows quando a localidade do sistema não está configurada para chinês.
  • Um comentarista fica confuso e irritado com o efeito de cursor do mouse presente na página.