Поскольку на компьютерах использовалось все больше языков, то миру нужно было представлять больше текстовых символов, чем допускала кодировка ASCII (где 1 байт допускал хранение только 256 символов).
utf-8 кодировка была введена с переменной длиной в 1-4 байта, значительно увеличивая диапазон возможных символов.
Преимуществом символов переменного размера является то, что текст не имеет не нужных байт для очень распространенной кодировки ASCII (для нее все также требуется только 1 байт в utf-8).
Недостатком символов переменного размера является то, что поиск символов больше не может быть выполнен быстро
(за постоянное время O(1)) простой индексацией (например, my_text[3]
для получения 4-го символа). Вполне возможно, что
предшествующие символы могли иметь переменную ширину, влияя на место где 4-й символ фактически начинается в последовательности байт.
Вместо этого нам нужно пройти последовательность utf-8 байт, чтобы понять, где на самом деле Unicode символы начинаются (за линейное время O(n)).
Ferris: "Я в основном счастлив иметь utf-8 для представления смайликов моих подводных друзей."
🐠🐙🐟🐬🐋