Как связаны Unicode и UTF-8
Unicode присваивает каждому символу уникальную кодовую точку. UTF-8 определяет, как записать эту точку в байтах для хранения и передачи.
Это разные уровни: Unicode задаёт универсальный набор символов, а UTF-8 является одним из способов его кодирования. Благодаря этому один документ может содержать кириллицу, латиницу, математические знаки и эмодзи без переключения таблиц.
Почему символы занимают разное количество байтов
| Длина | Типичные символы |
|---|---|
| 1 байт | Латинские буквы, цифры и основные знаки |
| 2 байта | Кириллица, греческий и ряд других алфавитов |
| 3 байта | Многие азиатские знаки и специальные символы |
| 4 байта | Часть эмодзи и редкие символы |
Первые 128 значений UTF-8 совпадают с ASCII. Поэтому старые англоязычные тексты остаются совместимыми, а более широкий набор символов кодируется дополнительными байтами.
Где применяется UTF-8
- HTML-страницы и таблицы стилей;
- JSON, XML и ответы API;
- исходный код и конфигурационные файлы;
- базы данных и выгрузки CSV;
- электронные письма и шаблоны рассылок;
- адреса, формы и пользовательский контент.
Для корректной работы кодировку согласуют между файлом, HTTP-заголовком, HTML-документом, соединением с базой данных и самой таблицей. Одного указания в странице недостаточно, если сервер отправляет данные иначе.
Как указать и проверить кодировку
В HTML используют мета-объявление charset со значением UTF-8, а сервер передаёт соответствующий параметр в заголовке Content-Type. В базе данных проверяют кодировку таблиц, соединения и сравнение строк.
- Определить фактическую кодировку исходного файла.
- Проверить HTTP-заголовок и объявление в документе.
- Сверить настройки приложения и базы данных.
- Выполнить тест с кириллицей и специальными символами.
- Сохранить резервную копию перед массовой конвертацией.
Почему появляются кракозябры и как их исправить
Нечитаемый текст возникает, когда байты записали в одной кодировке, а прочитали в другой. Повторная неправильная конвертация может исказить данные ещё сильнее.
Исправление начинают с определения исходных байтов и точки, где произошло несовпадение. Затем восстанавливают данные из резервной копии или выполняют одну контролируемую конвертацию. Простая замена отображаемых символов не устраняет причину и может потерять часть текста.
Технологию и связанные с ней требования важно учитывать при разработки сайта от Saygona.
Комментарий экспертаПроблемы с кодировкой лучше искать по всей цепочке: файл, серверный заголовок, приложение, соединение и база данных. Массовая конвертация без резервной копии опасна, потому что повторно искажённые байты не всегда удаётся восстановить.
Вопросы и ответы: UTF-8
Нет. Unicode задаёт номера символов, а UTF-8 описывает способ записи этих номеров последовательностями байтов.
От одного до четырёх. Латинские буквы обычно занимают один байт, кириллица — два, а некоторые символы и эмодзи — три или четыре.
Обычно данные записаны в одной кодировке, а браузер, приложение или база пытаются прочитать их в другой.
Да. Она корректно поддерживает кириллицу и позволяет хранить многоязычный контент в единой кодировке.

