Кодирование символов (информатика)

Материал из Циклопедии
Перейти к навигации Перейти к поиску

Кодирование символов в информатике — это процесс присвоения каждому из символов какого-либо алфавита (буквам, цифрам, знакам препинания и вспомогательным символам) уникального цифрового кода, который представлен одним или несколькими байтами. В свою очередь, совокупность этих кодов представляет собой соответствующую кодовую таблицу (кодовую страницу). В настоящее время более употребим термин «набор символов» (англ. character set), который узаконен международным стандартом RFC2278[1], так как термин кодовая таблица, как правило, обозначает частный случай таблицы набора символов с однобайтовым кодированием.

Кодирование символов в компьютере[править]

Процесс кодирования символов, позволяющий представить текстовую информацию в виде машинного кода, активно используется в самых разных языках программирования, например таких как Java[2], Perl[3], XSLT[4], а также в HTML[5].

В настоящее время преобладают три типа кодировок: 8-ми битовые ASCII[6] и EBCDIC[7] и 16-битовые кодировки, основанные на Юникоде[8]. Представление UTF-8 в Юникоде полностью совместимо с ASCII. Кодировки на основе EBCDIC (такие как ДКОИ) применяются лишь на некоторых мэйнфреймах. Ранее каждая операционная система имела свой собственный набор символов. На сегодняшний день используемые наборы символов стандартизованы и зависят от типа операционной системы как дань традиции и определяются локальными настройками[9].

Для примера ниже приведена часть кодовой таблицы ASCII (для символов, цифр и буквы латинского алфавита):

Шаблон:По диагонали 0 1 2 3 4 5 6 7 8 9 A B C D E F
2 Пробел ! " # $ % & ' ( ) * + , - . /
3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z [ \ ] ^ _
6 ` a b c d e f g h i j k l m n o
7 p q r s t u v w x y z { | } ~

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

шестнадцатеричное число 3016 является кодом цифры «0». В двоичном представлении это будет 001100002
шестнадцатеричное число 4A16 является кодом прописной буквы «J». В двоичном представлении это будет 010010102
шестнадцатеричное число 6A16 является кодом строчной буквы «j». В двоичном представлении это будет 011010102

8-битовые компьютеры отличались небольшими объёмами оперативной и постоянной памяти, поэтому многобайтовые кодировки в этих устройствах не получили широкого применения. Это объясняется не только большим размером текстов в таких кодировках, но и недостаточным количеством памяти для хранения графики дополнительных символов, а также сложностями в обработке таких строк. В наши дни наиболее часто встречаются следующие стандартные однобайтовые кодировки:

  • В англоязычных программах — CP437;
  • В русскоязычных программах используются такие варианты[10]:
    • CP866 — с этими кодировками работают более опытные пользователи, работавшими ранее в DOS. Они поддерживает псевдографические «рамки», но требует хранения оригинального текста ПО в данной кодировке, что может создать трудности для новичков;
    • CP1251 — вариант удобен, когда требуется сохранять русские символы в непрерывном массиве для удобства их обработки, и если используется ОС Windows, возможно перекодировать текст без дополнительных утилит. Однако, не поддерживает рисование «рамок».

Автоматическое распознавание кодировок[править]

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

При работе с однобайтовыми кодировками важно помнить, что частотность использования различных символов может значительно различаться (например, в русском языке часто встречается «о», а знак «ъ» используется редко). Поэтому, зная язык исходного текста, можно выбрать кодировку, в которой частотный профиль байтов лучше соответствует частоте букв этого языка.[11] Однако такие эвристические методы определения кодировки текста сегодня не используются, поскольку современные технологии в большинстве случаев позволяют безошибочно определить правильную кодовую страницу (как в случае с MIME).

Распространённые кодировки[править]

Универсальные кодовые страницы, имеющие широкое распространение[12]:

См. также[править]

Ссылки[править]

Примечания[править]

  1. RFC 2278. Network Working Group (1998). Проверено 14 октября 2024.
  2. Перечень основных «кодировок» в руководстве по Java SE 6. Архивировано из первоисточника 16 декабря 2008. Проверено 15 октября 2024.
  3. Обсуждение темы «кодировок» в документации по языку Perl. Архивировано из первоисточника 6 октября 2008. Проверено 15 октября 2024.
  4. Обсуждение темы «кодировок» в документации по технологии XSLT. Архивировано из первоисточника 13 августа 2017. Проверено 15 октября 2024.
  5. Обсуждение соотношения терминов «кодировка» и «набор символов» в документации по языку HTML. Архивировано из первоисточника 26 октября 2008. Проверено 15 октября 2024.
  6. ASCII англ.. dictionary.cambridge.org. Архивировано из первоисточника 27 сентября 2017. Проверено 15 октября 2024.
  7. Extended Binary Coded Decimal Information Code. Dictionary of Computer and Internet Terms. Архивировано из первоисточника 7 сентября 2010. Проверено 14 октября 2024.
  8. The Unicode® Standard: A Technical Introduction. The Unicode Standard. Архивировано из первоисточника 10 марта 2010. Проверено 15 октября 2024.
  9. Спецификации наборов символов на сайте IANA. Архивировано из первоисточника 16 июля 2004. Проверено 15 октября 2024.
  10. Кодовые страницы. Информатика 54. Проверено 15 октября 2024.
  11. Универсальный декодер — конвертер кириллицы. Архивировано из первоисточника 28 декабря 2014. Проверено 15 октября 2024.
  12. Кодировки символов и формат UTF-8 (2024-04-14). Проверено 15 октября 2024.
 
Основы
Исторические кодировки
современное
8-битное
представление
Многобайтные
Связанные темы

Категория Компьютерные кодировки

Знание.Вики

Одним из источников, использованных при создании данной статьи, является статья из википроекта «Знание.Вики» («znanierussia.ru») под названием «Кодирование символов (информатика)», расположенная по следующим адресам:

Материал указанной статьи полностью или частично использован в Циклопедии по лицензии CC-BY-SA 4.0 и более поздних версий.

Всем участникам Знание.Вики предлагается прочитать материал «Почему Циклопедия?».