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

Фон

В мире компьютеров данные передаются только с помощью двух битов: 1 (высокий) и 0 (низкий). Следовательно, наши высокоуровневые данные должны быть закодированы с низкоуровневыми данными, чтобы наши машины могли их понимать, манипулировать и передавать.

Традиционно наиболее распространенной системой кодирования был ASCII. ASCII кодируется английскими алфавитами, числами, символами и некоторыми специальными символами. Со временем возникла необходимость включить больше языков, символов, символов, сценариев и даже смайликов, и необходимость в новой системе кодирования стала неизбежной.

Консорциум Unicode был создан в январе 1991 года в штат Калифорния, через четыре года после появления концепции новой кодировки символов, которая будет называться Unicode , была затронута в обсуждениях, начатых инженерами Xerox (Джо Беккер) и Apple (Ли Коллинз и Марк Дэвис). Перенесемся в 21 век, и два самых популярных способа кодирования данных — это использование UTF-8 и UTF-16. Ниже приведен график, показывающий, насколько популярность UTF-8 выросла с 2006 года.

Структура

Структура памяти выглядит примерно так:

  • 1 байт — ASCII
  • 2 байта — латинские шрифты, в том числе, греческий , Кириллица, коптский и др.
  • 3 байта — Basic Multilingual Plane содержит символы почти для всех современных языков и большое количество символов.
  • 4 байта — исторические сценарии, математические символы и смайлики.
Количество байтов Байт 1 Байт 2 Байт 3 Байт 4
1 0xxx xxxx
2 110x xxxx 10xx xxxx
3 1110 xxxx 10xx xxxx 10xx xxxx
4 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx

В таблице выше показаны базовая структура того, как данные кодируются в формате UTF-8. Все x заменяются на 1 и 0 в соответствии с кодовой точкой.. Если количество значащих битов не более семи, применяется первая строка; если его не более 11 бит, применяется вторая строка и т. д.

Возможности

  • Обратная совместимость : первые 128 символов — в диапазоне от 0x0000 в 0x007f — отображается непосредственно на диапазон кодовых точек ASCII. Это означает, что везде, где использовалась кодовая точка ASCII, UTF-8 можно легко заменить без каких-либо проблем.
  • Откат и автоопределение : существует программное обеспечение, поддерживающее расширенный ASCII кодировки символов — это восьмибитные или большие кодировки, которые включают стандартные семибитные символы ASCII плюс дополнительные символы. ключевое слово> кодировка. Они не отображаются непосредственно на кодовые точки UTF-8. Когда UTF-8 обнаруживает расширенный ASCII, он откатывает или заменяет 8-битные байты соответствующей кодовой точкой.
  • Библиотеки : при написании кода, если возникает необходимость ввода/вывода не-ASCII данных, вам понадобится поддержка UTF-8. К счастью, есть библиотеки, поддерживающие UTF-8, например ICU для C, C ++ и Java.
  • Самосинхронизация : вернитесь к таблице выше — заметили ли вы, что ведущий байт начинается с 11 , а остальные байты продолжения начинаются с 10 ? Это помогает разделить кодовые точки символов и избежать ошибочного приема одного символа за другой. Некорректный символ не будет декодирован, если поток битов начинается с середины последовательности.
Оцените статью
nanomode.ru
Добавить комментарий