Глоссарий

Кодировка символов

кодировка текстасимвольная кодировка

Кодировка символов задаёт представление текстовых символов или кодовых позиций последовательностями байтов и обратное декодирование.

Определение

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

ASCII, UTF-8, UTF-16 и устаревшие кодовые страницы являются кодировками или схемами кодирования. Юникод задаёт общий набор и кодовые позиции, а UTF-8 и UTF-16 — их конкретное представление.

Как это работает

Кодировщик сопоставляет символам допустимую последовательность байтов, а декодер применяет обратные правила. В UTF-8 символ A записывается байтом 41, а — байтами E2 82 AC. В кодировках переменной длины позиции занимают разное число байтов.

HTTP charset, объявление формата файла или соглашение протокола указывает программе нужный декодер. Без контекста одни байты могут превратиться в разный текст.

Практический пример

Байты UTF-8 E2 82 AC при правильном декодировании дают . Если применить постороннюю однобайтовую кодировку, появятся другие символы. Такое видимое искажение часто называют кракозябрами.

Для конвертации сначала правильно декодируют исходные байты, а затем кодируют полученные символы в целевой кодировке. Простая смена метки байты не преобразует.

Ошибки и ограничения

Некорректную последовательность декодер может отклонить или заменить символом U+FFFD. Целевая кодировка также может не поддерживать часть символов, что приводит к ошибке, подстановке или потере данных.

Маркер порядка байтов, порядок байтов, нормализация Unicode и окончания строк — связанные, но отдельные вопросы. Кодировка символов — представление, а не шифрование.

Частые вопросы

Нет. Юникод назначает символам позиции и свойства, а UTF-8 кодирует эти позиции последовательностями байтов.

Байты могли декодировать неверной кодировкой либо исходные символы заменили, потому что целевая кодировка не могла их представить.

Нет. Некоторые байты допустимы сразу в нескольких кодировках, особенно короткий ASCII-текст. Нужны метаданные, BOM или внешний контекст.

См. также
Связанные инструменты
Связанные термины