Чем UTF-8 отличается от Unicode

Если бы вас спросили, «Чем UTF-8 отличается от Unicode?», вы бы с уверенностью дали чёткий ответ? В наши дни интернационализации все разработчики должны это сделать. Я думаю, что многие из нас не различают эти понятия должным образом. Если вы чувствуете, что принадлежите к такой группе, то должны прочитать это ультракороткое введение в наборы символов и кодировки.

На самом деле, сравнивать UTF-8 и Unicode — это как сравнивать яблоки и апельсины:
UTF-8 — это кодировка;
Unicode — это набор символов.

Набор символов — это список символов с уникальными номерами (эти номера иногда называют «code points»). Например, в наборе символов Unicode, номер «41» соответствует английской букве «A».

Кодировка — это алгоритм, который преобразует числа (номера в наборе символов) в двоичный код, понятный машине. Например, последовательность «1 2 3 4» в кодировке UTF-8 запишется как:

00000001 00000010 00000011 00000100

Теперь всё вместе

Допустим, приложение считывает с диска следующую информацию:

1101000 1100101 1101100 1101100 1101111

Приложение «знает», что эти данные представляют собой строку в формате Unicode, закодированную в кодировке UTF-8, поэтому, на первом этапе, оно преобразует двоичные данные в числа, используя алгоритм UTF-8. В результате получится следующее:

104 101 108 108 111

Поскольку, полученная строка — это unicode-строка, то, на втором этапе, приложение представит каждое отдельное число как символ, используя набор символов Unicode. Результат — слово «hello».

Заключение

Теперь, когда кто-нибудь спросит Вас, «Чем UTF-8 отличается от Unicode?», вы сможете с уверенностью ответить: UTF-8 и Unicode нельзя сравнивать. UTF-8 — это кодировка, которая используются для перевода двоичных данных в числа. Unicode — это набор символов, который используется для преобразования чисел в символы.