Кодирование символов (информатика)
Кодирование символов в информатике — это процесс присвоения каждому из символов какого-либо алфавита (буквам, цифрам, знакам препинания и вспомогательным символам) уникального цифрового кода, который представлен одним или несколькими байтами. В свою очередь, совокупность этих кодов представляет собой соответствующую кодовую таблицу (кодовую страницу). В настоящее время более употребим термин «набор символов» (англ. 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 (для символов, цифр и буквы латинского алфавита):
Hex 0-3 bit Hex 4-7 bit |
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]:
- ISO 646
- BCDIC
- EBCDIC
- ISO 8859:
- Кодовые страницы, применяемые в Microsoft Windows:
- Windows-1250 для центральноевропейских языков, использующих латиницу (польский, чешский, словацкий, венгерский, словенский, хорватский, румынский и албанский)
- Windows-1251 для языков с кириллической письменностью
- Windows-1252 для западноевропейских языков
- Windows-1253 для греческого
- Windows-1254 для турецкого
- Windows-1255 для иврита
- Windows-1256 для арабского
- Windows-1257 для языков Прибалтики
- Windows-1258 для вьетнамского
- MacRoman, MacCyrillic
- КОИ8 (KOI8-R, KOI8-U и другие), КОИ-7
- Болгарская кодировка
- ISCII
- VISCII
- Big5 (наиболее известна в интерпретации Microsoft как CP950)
- Guobiao
- Shift JIS для японского (соответствующая Microsoft CP932)
- EUC-KR для корейского (соответствующая Microsoft CP949)
- Сетевое кодирование ISO-2022 и EUC для китайской письменности
- Кодировки UTF-8, UTF-16 и UTF-32, которые включены в стандарт Юникод.
См. также
Ссылки
Примечания
- ↑ RFC 2278 . Network Working Group (1998). Дата обращения: 14 октября 2024.
- ↑ Перечень основных «кодировок» в руководстве по Java SE 6 . Дата обращения: 15 октября 2024. Архивировано 16 декабря 2008 года.
- ↑ Обсуждение темы «кодировок» в документации по языку Perl . Дата обращения: 15 октября 2024. Архивировано 6 октября 2008 года.
- ↑ Обсуждение темы «кодировок» в документации по технологии XSLT . Дата обращения: 15 октября 2024. Архивировано 13 августа 2017 года.
- ↑ Обсуждение соотношения терминов «кодировка» и «набор символов» в документации по языку HTML . Дата обращения: 15 октября 2024. Архивировано 26 октября 2008 года.
- ↑ ASCII (англ.). The Cambridge English Dictionary. dictionary.cambridge.org. Дата обращения: 15 октября 2024. Архивировано 27 сентября 2017 года.
- ↑ Extended Binary Coded Decimal Information Code . Dictionary of Computer and Internet Terms. Дата обращения: 14 октября 2024. Архивировано 7 сентября 2010 года.
- ↑ The Unicode® Standard: A Technical Introduction . The Unicode Standard. Дата обращения: 15 октября 2024. Архивировано 10 марта 2010 года.
- ↑ Спецификации наборов символов на сайте IANA . Дата обращения: 15 октября 2024. Архивировано 16 июля 2004 года.
- ↑ Кодовые страницы . Информатика 54. Дата обращения: 15 октября 2024.
- ↑ Универсальный декодер — конвертер кириллицы . Дата обращения: 15 октября 2024. Архивировано 28 декабря 2014 года.
- ↑ Кодировки символов и формат UTF-8 (14 апреля 2024). Дата обращения: 15 октября 2024.
Данная статья имеет статус «готовой». Это не говорит о качестве статьи, однако в ней уже в достаточной степени раскрыта основная тема. Если вы хотите улучшить статью — правьте смело! |