FrontendBook - Что такое UTF-8?

Что такое UTF-8?

UTF-8 — это система кодировки символов. Он позволяет вам представлять символы в виде текста ASCII, но в то же время позволяет использовать международные символы, такие как китайские иероглифы.

По состоянию на середину 2020-х годов UTF-8 является одной из самых популярных систем кодирования.

Чтобы начать использовать UTF-8, вам нужно сначала ознакомиться с основным набором символов ASCII.

Что такое набор символов ASCII?

ASCII использует 7-битные кодовые точки для представления 128 различных символов. Эти кодовые точки разделены на 95 печатных символов, которые включают 26 букв английского алфавита (от A до Z, как в верхнем, так и в нижнем регистре), 10 цифр (от 0 до 9), а также различные знаки препинания и другие символы.

Есть также 33 непечатаемых символа, которые включают в себя управляющие символы, такие как возврат каретки и перевод строки, а также различные другие символы, которые используются для таких вещей, как форматирование текста.

UTF-8 VS ASCII — в чем разница?

UTF-8 расширяет набор символов ASCII для использования 8-битных кодовых точек, что позволяет использовать до 256 различных символов.

Это означает, что UTF-8 может представлять все печатные символы ASCII, а также непечатаемые символы.

UTF-8 также включает множество дополнительных международных символов, таких как китайские иероглифы и арабские иероглифы.

Как использовать UTF-8 на ваших веб-страницах — пример HTML UTF-8

А теперь легкая часть. На самом деле вам не нужно знать, как это работает (хотя я расскажу вам через мгновение). Вы можете настроить кодировку символов UTF-8 в своем HTML-коде с помощью одной строки HTML, расположенной в <head>разделе вашего кода:


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
</html>

Не говоря уже об этом, позвольте мне объяснить, как работает UTF-8 и почему это такая блестящая схема кодирования.

Как работает кодировка UTF-8 и сколько памяти занимает каждый символ

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

  • кодовые точки в диапазоне ASCII (0-127) представлены одним байтом
  • кодовые точки в диапазоне (128-2047) представлены двумя байтами
  • кодовые точки в диапазоне (2048-65535) представлены тремя байтами
  • а кодовые точки в диапазоне (65536-1114111) представлены четырьмя байтами. (Может показаться, что возможных иероглифов может быть много, но имейте в виду, что только в китайском языке насчитывается 100 000 иероглифов.)

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

Ведущий байт для однобайтовой последовательности всегда находится в диапазоне (0-127). Ведущий байт для двухбайтовой последовательности находится в диапазоне (194-223). Ведущий байт для трехбайтовой последовательности находится в диапазоне (224-239). А старший байт для четырехбайтовой последовательности находится в диапазоне (240-247).

Остальные байты в последовательности называются «конечными байтами». Конечные байты для двухбайтовой последовательности находятся в диапазоне (128-191). Конечные байты для трехбайтовой последовательности находятся в диапазоне (128-191). И конечные байты для четырехбайтовой последовательности находятся в диапазоне (128-191).

Вы можете вычислить значение кодовой точки символа, взглянув на начальный байт и замыкающие байты. Для однобайтовой последовательности значение кодовой точки равно значению старшего байта.

Для двухбайтовой последовательности значение кодовой точки равно ((начальный байт - 194) * 64) + (конечный байт - 128).

Для трехбайтовой последовательности значение кодовой точки равно ((начальный байт - 224) * 4096) + ((завершающий байт 1 - 128) * 64) + (завершающий байт 2 - 128).

Для четырехбайтовой последовательности значение кодовой точки равно ((начальный байт - 240) * 262144) + ((конечный байт 1 - 128) * 4096) + ((конечный байт 2 - 128) * 64) + (конечный байт 3 - 128).

UTF-8 — лучший выбор для кодирования

Опять же, UTF-8 — суперэффективная система кодирования. Он может представлять широкий спектр символов, оставаясь при этом совместимым с ASCII. Это делает его разумным выбором для использования в интернационализированном программном обеспечении.