Что такое кодировка текста?
Представьте, что компьютер понимает только язык чисел — нули и единицы. Чтобы сохранить, передать или отобразить текст, ему нужен переводчик, который превратит буквы в числа, а затем обратно. Таким переводчиком и является кодировка текста (или кодировка символов). Это система правил, которая ставит в соответствие каждому символу — букве, цифре, знаку препинания или даже смайлику — его уникальный числовой код.
Кодирование информации — процесс преобразования сигнала из формы, удобной для непосредственного использования информации, в форму, удобную для передачи, хранения или автоматической переработки.
Без кодировки текст на вашем экране был бы просто бессмысленным набором байтов. Именно кодировка говорит программе (браузеру, текстовому редактору), что числовой код 1070 в определённой системе — это русская буква «Ю», а код 65 — латинская «A».
Как это работает и зачем это нужно?
Когда вы нажимаете клавишу на клавиатуре, операционная система фиксирует не изображение буквы, а её код в выбранной кодировке. Этот код (последовательность битов) сохраняется в файле или передаётся по сети. Когда файл открывается на другом устройстве, программа считывает эти числовые коды и, используя ту же самую (или совместимую) таблицу кодировки, находит соответствующий им символ для отображения на экране.
Если же программа использует другую кодировку, происходит «кракозябры» — вместо читаемого текста вы видите странные символы. Это прямое следствие несовпадения «словарей» для перевода чисел в буквы.
Основные виды и классификация кодировок
За десятилетия развития вычислительной техники было создано множество кодировок. Их можно классифицировать по охвату символов и принципу действия.
1. Однобайтовые кодировки (для одного языка/алфавита)
Эти кодировки используют для хранения одного символа ровно 1 байт (8 бит), что позволяет закодировать максимум 256 уникальных символов. Они идеально подходили для одного языка, но не могли вместить все символы мира в одну таблицу.
- ASCII (American Standard Code for Information Interchange): базовая 7-битная кодировка, созданная в США. Содержит 128 символов: латинский алфавит, цифры, основные знаки препинания и управляющие символы. Стала основой для многих других кодировок.
- Кодировки семейства Windows-1251 (CP1251): расширение ASCII для кириллицы. Разработана Microsoft и долгое время была стандартом для русскоязычных версий Windows. В неё, помимо ASCII-символов, добавлены буквы русского, украинского и некоторых других алфавитов.
- KOI8-R: ещё одна популярная 8-битная кодировка для русского языка, широко использовавшаяся в UNIX-системах и раннем Рунете.
2. Универсальные многобайтовые кодировки
Попытка решить проблему «вавилонского столпотворения» кодировок. Позволяют хранить символы сотен письменностей мира в едином стандарте.
- Unicode (Юникод): это не одна кодировка, а глобальный стандарт, который присваивает уникальный номер (кодовую точку) каждому символу из всех известных письменностей, включая исторические, математические и технические символы, эмодзи. Например, русской букве «Я» в Unicode присвоен номер U+042F.
- UTF-8: самый распространённый на сегодня способ кодирования символов стандарта Unicode. Его гениальность в переменной длине: для латинских букв и цифр он использует 1 байт (полная совместимость с ASCII), для кириллицы — 2 байта, для более редких символов — 3 или 4 байта. Это делает UTF-8 экономичным и универсальным, поэтому он является стандартом для веб-страниц (более 95% сайтов), современных операционных систем и форматов данных (JSON, XML).
- UTF-16 и UTF-32: другие формы кодирования Unicode, использующие для каждого символа фиксированное количество байт (2 или 4 соответственно). Чаще применяются внутри некоторых операционных систем и сред выполнения.
Где мы встречаемся с кодировками?
Понятие кодировки окружает нас повсеместно в цифровом мире:
- Веб-сайты: браузер и сервер договариваются о кодировке через HTTP-заголовки или метатег
<meta charset="UTF-8">в HTML-коде страницы. - Текстовые файлы и редакторы: при сохранении файла в «Блокноте», Notepad++ или Microsoft Word необходимо выбрать правильную кодировку, чтобы файл можно было прочитать на другом компьютере.
- Электронная почта: кодировки (например, Base64 или Quoted-Printable) используются для корректной передачи не только текста, но и вложений в письмах.
- Базы данных: при создании таблицы в MySQL, PostgreSQL или другой СУБД для текстовых полей обязательно указывается кодировка (чаще всего utf8mb4).
- Программирование: правильная работа с кодировками критически важна при обработке строк, чтении файлов, формировании веб-страниц.
Итог
Кодировка текста — это фундаментальный цифровой «словарь», без которого невозможен обмен текстовой информацией между устройствами и программами. От простых однобайтовых таблиц вроде ASCII мир перешёл к универсальному стандарту Unicode и его эффективной реализации UTF-8, которая стала lingua franca цифрового текста. Понимание основ кодировок помогает избежать проблем с отображением символов и правильно настраивать программное обеспечение и веб-ресурсы.
Частые вопросы по теме
- Почему вместо русского текста отображаются кракозябры (�, или …)? Это самая частая проблема — несовпадение кодировки, в которой сохранён текст, и кодировки, в которой программа пытается его прочитать. Решение: угадать или определить исходную кодировку и указать её при открытии файла.
- В чём разница между Unicode и UTF-8? Unicode — это стандарт, который определяет, какой номер (кодовая точка) соответствует какому символу. UTF-8 — это один из практических способов записать (закодировать) этот номер в виде последовательности байтов для хранения или передачи.
- Какую кодировку выбрать для нового сайта или проекта? Однозначно UTF-8. Это современный, универсальный и наиболее поддерживаемый стандарт, который покрывает все языки и символы.
- Что такое BOM (Byte Order Mark) в начале файла? Это специальный невидимый символ (U+FEFF), который может быть записан в начале файла в UTF-8, UTF-16 и др. Он помогает программе определить кодировку и порядок байтов. Для UTF-8 его использование часто не рекомендуется.
- Как кодировки связаны с шрифтами? Кодировка отвечает за то, какое число соответствует букве «А». А шрифт отвечает за то, как именно эта буква «А» будет нарисована на экране (её графическое представление). Шрифт должен содержать глифы (изображения) для тех кодовых точек, которые используются в тексте.
Комментарии
—Войдите, чтобы оставить комментарий