Чем 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 — это набор символов, который используется для преобразования чисел в символы.