W miarę jak coraz więcej języków było używanych na komputerach, świat potrzebował sposobu na reprezentowanie większej liczby znaków tekstowych niż pozwalał na to ASCII (1 bajt pozwalał jedynie na 256 znaków).
Wprowadzono utf-8 ze zmienną długością bajtową wynoszącą od 1 do 4 bajtów, co znacznie zwiększyło zakres możliwych do przedstawienia znaków.
Zaletą znaków o zmiennym rozmiarze jest to, że tekst nie posiada niepotrzebnych bajtów dla bardzo powszechnych znaków ASCII (nadal wymagających tylko 1 bajtu w utf-8).
Wadą znaków o zmiennym rozmiarze jest to, że wyszukiwanie konkretnego znaku nie może być już wykonane szybko
(w stałym czasie O(1)) przy pomocy prostego indeksowania (np. my_text[3] żeby dostać się do 4. znaku). Możliwe jest bowiem, że
poprzedzające znaki mają zmienną szerokość, przez co zmienia się miejsce, w którym faktycznie zaczyna się 4. znak w sekwencji bajtów.
Zamiast tego musimy przeiterować przez sekwencję bajtów utf-8, żeby zrozumieć, gdzie faktycznie zaczynają się poszczególne znaki Unicode (w liniowym czasie O(n)).
Ferris: "Głównie cieszę się po prostu z tego, że mam utf-8 do reprezentowania emotikon moich podwodnych przyjaciół."
🐠🐙🐟🐬🐋
