À medida que mais idiomas eram usados nos computadores o mundo precisava representar mais caracteres de texto do que o permitido pelo ASCII (1 byte permitia apenas 256 caracteres).
O utf-8 foi introduzido com um comprimento em bytes variável de 1 a 4 bytes, aumentando bastante o intervalo de caracteres possíveis.
Uma vantagem dos caracteres de tamanho variável é que o texto não tem bytes desnecessários para os caracteres ASCII comumente usados (requer apenas 1 byte mesmo em utf-8).
Uma desvantagem dos caracteres de tamanho variável é que a pesquisa de caracteres não pode mais ser feita rapidamente (tempo constante de O(1)) com uma indexação simples (por exemplo my_text[3]
para obter o 4º caractere). É possível que os caracteres anteriores tenham larguras variáveis, alterando onde o quarto caractere realmente começa na sequência de bytes.
Em vez disso, devemos iterar por uma sequência de bytes utf-8 para entender onde os caracteres Unicode realmente começam (tempo linear de O(n)).
Ferris: "Estou muito feliz por ter utf-8 para representar os emojis dos meus amigos subaquáticos."
🐠🐙🐟🐬🐋